【发布时间】:2017-01-31 18:10:37
【问题描述】:
所以,我正在使用 PHP 并将准备好的语句发送到 MySQL 数据库。我遇到了一个我无法调试的问题。这是我的代码:
// Check if the input username is in the database
$stmtQuery = "SELECT * FROM updatedplayers WHERE Player=?;";
$preparedStmt = $dbc->prepare($stmtQuery);
$preparedStmt->bind_param("s", $setUsername);
$preparedStmt->execute();
$preparedStmt->bind_result($resultUUID, $resultUsername);
$preparedStmt->fetch();
// If it's not, kill the page.
if ($resultUUID == null) {
incorrect();
}
$stmtQuery = "SELECT Password, Salt FROM logins WHERE UUID=?;";
echo 'flag1 ';
$preparedStmt = $dbc->prepare($stmtQuery);
echo 'flag2 ';
$preparedStmt->bind_param("s", $resultUUID);
echo 'flag3 ';
第一个准备好的语句工作正常,它位于$preparedStmt->bind_param("s", $resultUUID); 行。在这些之前还有一些其他准备好的语句,所以我知道我这样做是正确的,但我不太确定最后一个语句。
代码似乎在echo 'flag2 '; 之后停止运行,我把它放在那里是为了找到特定的行。我没有收到任何错误消息,只是没有打印出flag3。
我试过用静态字符串替换$resultUUID,但我得到了相同的结果。另外,我知道我的 SQL 语句格式正确,我已经在控制台中手动进行了测试。
差不多就是这样,我很想听到一些批评,因为我是 PHP 新手。此外,有什么方法可以更好地了解我得到的错误,而不是自己尝试查明错误?谢谢!
【问题讨论】:
-
mysqli驱动程序有一个错误报告功能,php.net/manual/en/mysqli.error.php。尝试在每个数据库交互中使用它。可能还想查看stackoverflow.com/questions/22662488/… 以获取更多 mysqli 错误报告选项。 -
错误报告好运吗?
-
@chris85 我目前没有时间填写。后天我有时间,然后我会回复你的。 :)
标签: php mysql prepared-statement