如何调试mysql驱动中的UPDATE执行


How to debug UPDATE execution in mysqli driver

我看了很多帖子,但我仍然不明白为什么这个简单的UPDATE不能影响数据库:


$con = mysqli_connect("localhost", "username", "password", "database");
// check connection
if (mysqli_connect_errno()) {
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$quantityArray = array();
foreach ($_POST as $key => $value) {
    $quantityArray[$key] = $value;
}
foreach ($quantityArray as $key => $value) {
    $value = mysqli_real_escape_string($con, $value);
}
foreach ($quantityArray as $key => $value) {
    $query = "UPDATE inventory SET quantity = $value WHERE uniqueID = $key";
echo "<br /><br / >" . $query . "<br /><br / >";
    $result = mysqli_query($con, $query);
echo "<br /><br / >" . $result . "<br /><br / >";
}

当调用这个脚本时,$_POST是一个数组,其中唯一的id作为键,数量作为值(两者都是整数值)。我已经测试并确认,是的,只有适当的键和它们的值被传递,所以为什么这不起作用对我来说是一个谜。

UPDATE: $result不返回任何值

谢谢你的帮助!

从注释中我们得到了一个简单的解决方案:mysqli_error( $con );帮助找出默认的用户权限不足以对指定的表执行UPDATE操作。添加具有适当权限的新用户解决了这个问题。

尝试更改

$query = "UPDATE inventory SET quantity=" . $value . " WHERE uniqueID=" . $key;

$query = "UPDATE databasename . inventory SET quantity=" . $value . " WHERE uniqueID=" . $key;

也许UPDATE语句正在正确更新,但是您正在寻找错误的数据库来检查它!

试试这个:

$query = "UPDATE inventory SET quantity = $value WHERE uniqueID = $key";