mysql_real_query vs mysql_query

时间:2011-09-20 14:27:15

标签: php mysql

mysql_real_querymysql_query之间有什么区别?我已经快速谷歌搜索,但找不到任何显示两者之间差异的链接。

4 个答案:

答案 0 :(得分:12)

PHP中不存在mysql_real_query()。但是,mysqli_real_query()存在。

根据官方MySQL手册(C API):http://dev.mysql.com/doc/refman/5.0/en/mysql-real-query.html

  

mysql_query()不能用于包含二进制数据的语句;你必须使用mysql_real_query()。 (二进制数据可能包含“\ 0”字符,mysql_query()将其解释为语句字符串的结尾。)此外,mysql_real_query()比mysql_query()更快,因为它不会在语句字符串上调用strlen()

关于第二个问题,插入多个记录的最佳方法是创建一个包含多个值的INSERT查询:

INSERT INTO table (col1, col2) VALUES (1, 1), (2,2), (3,3)

等等。 这将在1个操作中插入所有新行,因此它应该比运行3个查询更快,每行一个。

PS:您应该考虑使用支持预准备语句的扩展,例如MySQLi(注意i)或者更好的PDO。 不仅准备好的语句更安全(如果你正确使用它们,它们对SQL注入是100%安全的),而且还允许你做这样的事情,就像你在本页的例子中看到的那样:http://fr2.php.net/manual/en/pdo.prepare.php(你可以做当然,还有INSERT查询)。啊,PDO也是面向对象的,这很好:)

答案 1 :(得分:3)

区别仅在于C API。一个采用C风格的字符串,另一个采用缓冲区和长度属性来允许NUL字节。 PHP内部使用mysql_real_query

答案 2 :(得分:0)

没有正式的PHP函数mysql_real_query

http://php.net/mysql_real_query

答案 3 :(得分:0)

Insert into table1 (a,b,c) VALUES (1,2,3),(1,2,4),(3,4,5)

这将在table1中添加三个新行,其中应包含列a,b和c(可能还有其他具有默认值或可以为null的行)。

请参阅https://dev.mysql.com/doc/refman/5.5/en/insert.html