php – mysqli_multi_query不能与mysql条件注释查询可靠

前端之家收集整理的这篇文章主要介绍了php – mysqli_multi_query不能与mysql条件注释查询可靠前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个问题与 mysql条件注释查询,其中错误报告没有语法错误.在这种情况下,至少有一个查询实际上是用条件执行的.

我正在使用PHP 5.6.24和MysqL 5.5.52-cll

示例1(成功):

<?PHP
$conn = MysqLi_connect("127.0.0.1","aaatex_PHPpos","PHPpos","aaatex_PHPpos2");

$test1 = "
/*!40000 REPLACE INTO `PHPpos_app_config` (`key`,`value`) VALUES ('supports_full_text','0') */;
/*!50604 REPLACE INTO `PHPpos_app_config` (`key`,'1') */;";

MysqLi_multi_query($conn,$test1);
print_r(MysqLi_error_list($conn));
?>

supports_full_text的值为0.

示例2(失败):

<?PHP
$conn = MysqLi_connect("127.0.0.1","aaatex_PHPpos2");

$test2 = "
/*!50604 REPLACE INTO `PHPpos_app_config` (`key`,`value`) VALUES ('test',$test2);
print_r(MysqLi_error_list($conn));

错误收到:

Array
(
    [0] => Array
        (
            [errno] => 1064
            [sqlstate] => 42000
            [error] => You have an error in your sql Syntax; check the manual that corresponds to your MysqL server version for the right Syntax to use near ';
    /*!50604 REPLACE INTO `PHPpos_app_config` (`key`,'1' at line 1
        )

)

示例3(失败;但看起来像成功(见下面的消息):

<?PHP
$conn = MysqLi_connect("127.0.0.1","aaatex_PHPpos2");

$test3 = "
/*!40000 REPLACE INTO `PHPpos_app_config` (`key`,$test3);
print_r(MysqLi_error_list($conn));

测试值为0.

这是PHP中的错误还是我做错了?

编辑:

注意:我发现当查询失败时,STOPS处理文件的其余部分.所以例3在第2和第3查询中仍然有错误;我没有抓到所有的错误. 40000查询工作;但任何不运行当前的MysqL版本失败作为语法错误.

你在这里有误解.你的MysqL版本是5.5.52.这意味着你得到的结果是正确的.

当您在查询中说/ *!40000 … * /时,您所说的这个查询只能在高于4.0.0的MysqL版本中执行.同样,/ *!50604 … * /表示这个查询执行的MysqL版本应该高于5.6.04.记住,这些数字与MysqL版本有关.不是PHP版本.

在您的第一次测试中,首次查询执行正常,因为您的MysqL版本大于4.0.0.但是,由于您的MysqL版本低于5.6.04,因此第二个查询将被跳过.这也是在其他两个测试中发生的.

但是我无法解释为什么你会收到语法错误,

You have an error in your sql Syntax; check the manual that corresponds to your MysqL server version for the right Syntax to use near ';
    /*!50604 REPLACE INTO `PHPpos_app_config` (`key`,'1' at line 1

在第二次测试.可能是您在此处查询查询不是您执行的实际查询.你能检查一下吗?因为我也做了所有这些测试(我有MysqL 5.5以及PHP 5.6),我没有遇到任何错误.我只看到没有执行更高版本的查询.

有关更多阅读请参阅this article.希望我的答案帮助您.

更新

通过查看其他答案,似乎您正在面临一个罕见的bug.尝试更新您的MysqL版本.如果问题仍然存在,可能是MysqL API的错误.

原文链接:https://www.f2er.com/php/138102.html

猜你在找的PHP相关文章