我遇到了这个问题,并且所有错误示例都使用了$ stmt->错误或我不明白的内容。我用程序式写作而不是OOP。我的插入失败,所以我很想调试它...
$dbc = mysqli_connect(DB_HOST, DB_USER, DB_USER_PASSWORD, DB_NAME) or die(DB_CONNECT_ERROR);
if (!$stmt = mysqli_prepare($dbc, $query)) die('SEL:mysqli_prepare');
call_user_func_array('mysqli_stmt_bind_param', array_merge(array($stmt, 'sssssssssssssssssssssbsssss')), $idb);
mysqli_stmt_execute($stmt);
if (!mysqli_stmt_affected_rows($stmt)) {
// Failed to insert
} else {
// Success
}
我的插入失败了......我怎么知道原因是什么?请提前谢谢!我也只是学习准备好的语句,所以如果我做错了,请提示......代码将其归结为// FAILED TO INSERT行,当检查cpanel时,查询确实失败了(DB中没有任何内容)。 / p>
如果你想使用我上面使用的编程风格编写你自己的例子,并告诉我如何检查插入失败是否也很酷。一旦我看到你如何做你的我就可以改变我的代码。 :)
答案 0 :(得分:9)
使用mysqli_stmt_error()
和mysqli_stmt_errno()
检索错误信息:
mysqli_stmt_execute($stmt);
printf("Error #%d: %s.\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
我建议你使用
if(mysqli_stmt_affected_rows($stmt) == 0)
而不是依赖于PHP的丑陋的autocast功能
if(!mysqli_stmt_affected_rows($stmt))
答案 1 :(得分:-1)
如果您回显stmt,并直接在SQL中尝试,那可能是您最简单的方法。
要在SQL中尝试,请使用命令行(如果可以),或者下载phpmyadmin,非常容易安装,并在那里运行查询。