查询 mariadb 数据库在 phpmyadmin 中工作,但不能从 php 中工作



注意:我知道预准备语句是一种更安全的方法。我的最终代码始终使用预准备语句,但这是我工作流的最后一步,因为预准备语句可能更难调试。

我从 php 向数据库发送查询的方法是:

<?php
include_once 'dbh.inc.php';
$sql = "<sql statement goes here>";
$stmt = mysqli_stmt_init($conn);
if(!mysqli_stmt_prepare($stmt, $sql)){
echo "<error message goes here>";
} else {
mysqli_stmt_execute($stmt);
}
?>

我已经测试过它,它适用于大多数有效的sql命令。

然后,在开发过程中,它返回了错误消息。我将 sql 命令更改为已知良好的命令,它再次工作正常。所以我使用echo $sql;将损坏的命令回显到浏览器中,选择它,将其复制到 phpMyAdmin,它完全按照我想要的方式执行。

更新产品集保留 = 20600,其中产品 = 'product1'; 更新产品集保留 = 1600,其中产品 = 'product2';

返回的执行mysqli_stmt_error($stmt)

您的 SQL 语法有误;请查看手册 对应于您的MariaDB服务器版本,以便使用正确的语法 靠近"更新产品集保留 = 1600,其中产品 = 第 1 行的"产品 2">

为什么当它通过phpMyAdmin工作时,它不能通过上面的方法工作?

涉及mysqli_stmt_init()mysqli_stmt_prepare()mysqli_stmt_execute()的进程一次只能执行一个命令。 phpMyAdmin可以一次执行多个命令。语句中给出的命令实际上是两个,用";"分隔。这就是phpMyAdmin能够运行它的原因。

相关内容

最新更新