2011-10-17 186 views
1

以下返回false,我不知道如何找出究竟是什么错误。PHP MySQL准备语句准备()失败

$stmt = $dbo->stmt_init(); 
if($stmt->prepare("INSERT INTO transactions ('id', 'time') VALUES ('',?)")) // returns false 
{ 
} 

我有另一个声明,当时选择打开。有多个报表是否有问题?

回答

3

您是否已验证您是否成功连接到数据库?

/* check connection */ 
if (mysqli_connect_errno()) { 
    printf("Connect failed: %s\n", mysqli_connect_error()); 
} 

至于搞清楚什么是错了你准备好的语句,你应该能够显示$ stmt->错误,它会返回最新表述错误的字符串,而$ dbo->错误,这将返回最新的mysqli错误。

printf("Error: %s.\n", $stmt->error); 
+0

感谢它给我:数据库错误:准备命令不同步;您现在无法运行此命令 – clamp

+2

您可能会使用以下SO问题: http://stackoverflow.com/questions/3632075/mysqli-giving-commands-out-of-sync-error-why http://stackoverflow.com/questions/614671/commands-out-of-sync-you-cant-run-this-command-now1 –

0

你不想在你的表名称单引号。它应该看起来像这样:

$stmt = $dbo->stmt_init(); 
if($stmt->prepare("INSERT INTO transactions (id, time) VALUES ('', ?)")) { 

} 
+0

感谢,但它并没有改变任何东西。仍然返回false。 – clamp

0

只是检查是否这些列输入正确......我渐渐同样的错误,怎么我在查询中提到的不存在的列名..