[英]$mysqli->prepare returns false, but $mysqli->error is an empty string
[英]mysqli prepare returns false but SQL is valid
我正在使用mysqli的prepare函数来创建对数据库的查询,但是即使我在同一页面的较早位置上有很多请求,它也对我失败。
我的查询如下所示:
if ($insert = $mysqli->prepare( "INSERT INTO table_name (id_user, token) VALUES (?, ?)")) {
// Do some cool stuff here
} else {
var_dump($mysqli->error);
var_dump($insert->error);
}
在执行过程中,它进入else,输出为:
string(0) "" //var_dump($mysqli->error);
Notice: Trying to get property of non-object in // var_dump($insert->error);
我知道我的$ mysqli正在工作,因此我也在prepare语句中测试了这些字符串。 他们都没有以太工作。 (我在mysql / phpmyadmin中测试了它们,它们工作正常)
"INSERT INTO `table_name` (`id_user`, `token`) VALUES (?, ?)"
"INSERT INTO `table_name` (`table_name`.`id_user`, `table_name`.`token`) VALUES (?, ?)"
'INSERT INTO `table_name` (`id_user`, `token`) VALUES (50, "random_token")'
有人可以帮我这个小小的头痛吗?
谢谢
该错误实际上是在抱怨未定义$ insert ...这很有意义,因为它正在击中您的else语句。
Notice: Trying to get property of non-object in // var_dump($insert->error);
请注意您自己注释的错误以及它实际上在抱怨什么。 您不应在else语句中引用$ insert变量
我终于弄明白了。 问题是我没有关闭以前的连接。 其中一个已经在使用相同的名称$ insert
我为可能找到此线程的人找到了两个可能的修复程序。
修复1- 关闭您的连接 ,就这么简单
$connectionVariable->close();
修正2-用不同的名称命名变量。 虽然您应该始终先执行Fix 1。 我想我必须很难找到它。
PS感谢所有帮助我的人
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.