首页 > 解决方案 > PHP mysqli_prepare 不支持锁语句?

问题描述

我试图锁定整张桌子。

使用以下代码:问题:if 语句从不打印 true,如果我使用 $sql 更改为其他一些 select 语句,它可以工作

$link = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_NAME);
$sql = "lock table tableA write";
if($stmt = mysqli_prepare($link, $sql))
    echo "true";

*也用于测试,我的 php 中没有其他代码。我也检查了用户,有

GRANT SELECT, INSERT, UPDATE, LOCK TABLES ON *.* TO 'user'@'localhost'

我想不通...而且我对使用 PHP 的 mysql 也是新手.. 任何帮助将不胜感激

编辑:添加后 mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

它显示错误消息:

PHP 致命错误:未捕获的 mysqli_sql_exception:/var/www/html/x.php:27 中的准备好的语句协议尚不支持此命令堆栈跟踪:#0 /var/www/html/x.php(27): mysqli_prepare(Object(mysqli), 'lock table tableA...') #1 {main} 在第 27 行的 /var/www/html/x.php 中抛出

我找到了解决方案..您可以直接使用 mysqli_query(..) 调用它,因为 mysqli_prepare 不支持锁定。

if(mysqli_query($link,$sql)){
    echo "true";
}

标签: phpmysqlmysqlilocking

解决方案


推荐阅读