关于STMT的原理我个人理解是,MYSQL有个语句池,你预处理进来的语句他都给你保存下来,然后你下次在客户端执行SQL语句,实际没有传递SQL语句到mysql那边,而是语句ID(prepare的时候生成的?)和对应的参数,然后mysql根据本地的语句池里对应ID的语句来进行参数替换,然后执行.
不懂我这样理解会不会有错误,关键是我不懂那个ID是在什么时候怎么返回给客户端的,希望大家解答,谢谢了.
不懂我这样理解会不会有错误,关键是我不懂那个ID是在什么时候怎么返回给客户端的,希望大家解答,谢谢了.
解决方案 »
- 链接数据库出现对‘mysql_init’未定义的引用,对‘mysql_real_connect’未定义的引用
- 在postgresql admin里面写入SQL语句以及建立复合类型问题
- show variables读取的文件或数据表是哪个?
- 如何让结果按照原表中的顺序显示?
- mysql新手问题!
- mysql显示乱码,怎么办?高手帮我
- mysql连接不上,请各位老大指点一下!
- date_format('2003-07-28 23:59:59','%Y-%m-%d %h:%i:%s')不能表示28号23点59分, 为什么?
- latin1编码update
- 用5000条记录去检索100万记录的表,在mysql中有什么好的策略?
- 新手求教MYSQL问题
- 询问关于discuz数据库设计的问题,为什么它的时间不用timestamp而是int,是非的值也不用boolean而是tinyint(1)
另外,你也不必每次都prepare. 如果是相同的sql语句,只需要调用prepare一次。
当你mysql_stmt_prepare了"UPDATE test_table SET str = ? WHERE num = ?"这样的查询语句后,然后绑定一个结构体了,就可以用不同的参数去替换这2个?,然后mysql_stmt_execute就可以完成了,那如果我把预计内的语句都mysql_stmt_prepare了,后面用的时候只要对相应的语句对应的结构体传参数就可以mysql_stmt_execute出结果了我是这个意思