mysql_query()和 mysql_real_query()区别?

xwb2766 2010-01-22 04:41:28
有两个问题,请教各位:
1、mysql_query()和 mysql_real_query()有什么区别?

2、
如果我先把链接m_connptr关闭
mysql_close(m_connptr);
然后再执行
mysql_query(m_connptr,ddl.c_str());
为什么是直接引起程序的崩溃,
而不是返回一个错误的信息呢?
...全文
2174 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
qieqie0207 2010-02-09
  • 打赏
  • 举报
回复
mysql_query 要判断句柄的有效性
处于程序安全考虑也要这样做啊
smilefox 2010-01-30
  • 打赏
  • 举报
回复
m_connptr都被关闭了。。。。下面还用???
吴丁 2010-01-28
  • 打赏
  • 举报
回复
mysql_query不会使得崩溃吧,你要调用mysql_query前判断一下是否为0了。当然前提是你在close的时候设置connptr=0;
mysql_query会自己找'\0'然后才知道要执行的sql语句是什么,而mysql_real_query就直接告诉它不用找了,第第几位就结束了。前者要调用strlen,后者可能是直接memcpy,所以速度理论上肯定会比mysql_query快一些。还有就是如果你的sql语句中包含有二进制的话,假如二进制中有'\0',我是说假如,假如这么运气不好的话,你用mysql_query会出问题。
xwb2766 2010-01-25
  • 打赏
  • 举报
回复
第二个问题还有人能回答一下吧 谢谢楼上
ACMAIN_CHM 2010-01-22
  • 打赏
  • 举报
回复
1、mysql_query()和 mysql_real_query()有什么区别?
这个在MYSQL的手册中就有说明如下。
mysql_query() cannot be used for statements that contain binary data; you must use mysql_real_query() instead. (Binary data may contain the “\0” character, which mysql_query() interprets as the end of the statement string.) In addition, mysql_real_query() is faster than mysql_query() because it does not call strlen() on the statement string.

以下由GOOGLE自动翻译
mysql_query()不能用于语句包含二进制数据,你必须使用mysql_real_query()代替。 (二进制数据可能包含“\ 0”的性质,这mysql_query()作为字符串结束的声明解释。)此外,mysql_real_query()比快mysql_query(),因为它不调用strlen()来对语句字符串。

56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧