gpt4 book ai didi

php - 返回由 mysqli_stmt_bind_param 创建的语句

转载 作者:可可西里 更新时间:2023-11-01 08:08:20 25 4
gpt4 key购买 nike

我正在使用 mysqli_stmt_bind_param() 创建一个 INSERT 语句。出于某种原因,我收到一个错误。我使用 mysqli_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 'desc,date,expdate,mintix,maxtix,contactname,contactemail,contactphone) VALUES (?' at line 1

最佳答案

由 mysqli_prepare() 创建的准备语句是服务器端准备语句。
当你执行这样一个准备好的语句时,只有语句 ID 和参数被传输,而不是一些查询字符串,就像你将用实际参数替换占位符一样(在客户端,即你的 php 脚本)。
但是你可以在MySQL服务器的通用日志中看到结果,见Prepared Statement Logging

编辑:在您的情况下,语句的准备失败,因为 desc 是保留关键字。
有关关键字列表以及如何将它们用作标识符(如有必要),请参阅 http://dev.mysql.com/doc/refman/5.0/en/reserved-words.html

$q = '
INSERT INTO
`event`
(
`cityid`, `name`, `desc`, `date`,
`expdate`, `mintix`, `maxtix`,
`contactname`, `contactemail`, `contactphone`
)
VALUES
(
?,?,?,?,
?,?,?,
?,?,?
)
';

if ( false===($stmt=mysqli_prepare($dblink, $q)) ) {
/*
in production-code you might not want to reveal
the error string to each and every user
...but for this example and for debugging purposes:
*/
die('mysqli_prepare failed: '.htmlspecialchars(mysqli_error($dblink)));
}

$rc = mysqli_stmt_bind_param(
$stmt,
"issssiisss",
$city,$name,$desc,$date,
$expdate,$mintix,$maxtix,
$contactname,$contactemail,$contactphone
);
if ( false===$rc ) {
die('mysqli_stmt_bind_param failed: '.htmlspecialchars(mysqli_stmt_error($stmt)));
}


if ( false===mysqli_stmt_execute($stmt) ) {
die('mysqli_stmt_execute failed: '.htmlspecialchars(mysqli_stmt_error($stmt)));
}

mysqli_stmt_close($stmt);

关于php - 返回由 mysqli_stmt_bind_param 创建的语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2531422/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com