500 在 mySQLi 准备语句中使用 UPDATE 时出现内部服务器错误


500 Internal Server Error using UPDATE in mySQLi Prepared Statement

我有一个非常简单的UPDATE命令,我正在尝试执行,但不断收到HTTP 500内部服务器错误。

$test = $mysqli->prepare('UPDATE `tname` SET column = ? WHERE `ID` = ?');
$test->bind_param('ii', $value, $id);
$test->execute();

过去几天我一直在寻找解决方案,但无济于事。

$mysqli对象已创建,在执行上述代码之前不会关闭。如果我将 prepare 语句更改为"SELECT"或除"UPDATE"以外的任何其他内容,它就会成功运行,这一事实证实了这一点。

$value$id 不为空;如果我回显它们,则值是正确的。

奇怪的是,在迁移到AWS之前,这在我的本地环境和Hostmonster上工作得很好。我是否需要更改一些设置?我找不到任何东西,问题似乎只出在涉及UPDATE的电话上。

我已经

找到了我自己的问题的解决方案,所以如果有人遇到类似的问题,这是我所做的:

  1. 如果您收到 HTTP 500 内部服务器错误,但您肯定服务器配置正确,那么您很可能有 PHP 错误,因此请转到 php.ini 并确保error_reporting E_ALL并且display_errors已打开。(您需要在生产环境中关闭此功能。

  2. 打开 PHP 错误后,问题的根源应该是显而易见的。对我来说,我的数据库用户没有 UPDATE 权限(我没有设置数据库,所以我不知道这一点),所以我只需要授予 UPDATE 权限。