gpt4 book ai didi

PHP - mysqli::prepare 返回 false

转载 作者:行者123 更新时间:2023-12-05 08:58:55 27 4
gpt4 key购买 nike

我有这个非常简单的 PHP 代码:

$mysqli = new mysqli('localhost', 'xxx', 'xxxxx', 'xxx');

$query = "SELECT * FROM questions WHERE id = ?";
$stmt = $mysqli->prepare($query);
$stmt->bind_param('d', $_GET['qid']);
$stmt->execute();
$stmt->bind_result($id, $content, $correct_ans, $lol);
$stmt->fetch();

//do sth with the data

$query = "SELECT * FROM answers WHERE question_id = ?";
$stmt = $mysqli->prepare($query);
$stmt->bind_param('d', $_GET['qid']);
$stmt->execute();
$stmt->bind_result($id, $content, $lol);

while($stmt->fetch())
{
//do sth
}

基本上,似乎无论我做什么,第二个 mysqli::prepare() 总是返回 false,但是 mysqli::error 由于某种原因是空的.任何人都可以看到这里的错误吗?

附言。这不是一个重复的问题;是的,已经有人问过:MySQLi prepared statement returning false但作者并没有费心与大家分享他的解决方案。

编辑:我想我应该解释一下:只有第二个 prepare 返回 false,第一个绝对没问题。更奇怪的是,如果我删除第一行代码(即第一行准备),第二行将毫无问题地工作......

EDIT2:好吧,我现在只能说 WTF。事实证明,如果我删除分配,(我不执行 $stmt = prepare()...) 而只是调用函数,$mysqli->error 列表不为空——它说“命令不同步;你现在不能运行这个命令”。如果我做作业,它是空的......

EDIT3:我切换到 PDO,它运行良好。在我能证明不是这样之前,我会假设 MySQLi 有问题。

最佳答案

在第二次使用 mysqli::prepare() 之前,您必须 free mysqli resultclose current mysqli statement :

...
//do sth with the data

$mysqli->free(); // or $stmt->close();

$query = "SELECT * FROM answers WHERE question_id = ?";
$stmt = $mysqli->prepare($query);
...

关于PHP - mysqli::prepare 返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19466242/

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