mysqli prepare返回false但SQL有效

时间:2014-04-30 03:14:58

标签: php sql mysqli

我使用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")'

有人可以帮助我解决这个小问题吗?

谢谢

2 个答案:

答案 0 :(得分:1)

错误实际上是在抱怨$ insert没有被定义......这是有道理的,因为它正在击中你的其他声明。

Notice: Trying to get property of non-object in // var_dump($insert->error);

请注意您自己评论的错误,以及它实际抱怨的内容。您不应该在else语句

中引用$ insert变量

答案 1 :(得分:-1)

我终于明白了。问题是我没有关闭以前的连接。其中一个已使用相同的名称​​ $ insert

我找到了可以找到此帖子的人的两个可能的修复程序。

修复1 - 关闭您的连接,这很简单

$connectionVariable->close();

修复2 - 以不同方式命名变量。虽然您应该首先执行修复1。我想我必须找到困难的方法。

P.S。感谢所有帮助过我的人