用于更新值的 PHP 脚本无法正常工作


PHP script to update a value does not work correctly

我有以下PHP脚本,我正在尝试执行。它非常简单,但我忽略了一些东西,因为它无法正常工作。如果用户切换单选按钮,则会调用此脚本并刷新页面。但是,MySQL中的"启用"列永远不会从"0"更新为"1"。如果我手动将启用列的值输入为"1",则脚本会执行将启用列的值更新回"0",但永远不会再次更新为"1"。我忽略了什么?

$sql="SELECT enabled FROM somecolumn.persist";
$row = mysql_fetch_row($sql);
$enabled=$row[0];
if ($enabled==0) {
    $query="UPDATE `somecolumn`.`persist` SET  `enabled` =  '1' WHERE `persist`.`enabled` =0";
} else {
    $query="UPDATE `somecolumn`.`persist` SET  `enabled` =  '0' WHERE `persist`.`enabled` =1";
}
mysql_query($query);

似乎您所做的只是切换给定表中所有记录的列值。为什么还要费心从数据库中读取值然后进行更新? 您可以立即进行更新。

$sql = "UPDATE `somecolumn`.`persist` SET `enabled` = ABS(`enabled` - 1)";
$result = mysql_query($sql);
if (false === $result) { // something went wrong
    throw new Exception('Query "'. $sql . '" failed with error: ' . mysql_error());
}

这会将所有 1 翻转为 0 和 0 到 1',而无需执行任何SELECT

根据这个: http://php.net/manual/bg/function.mysql-fetch-row.php

您应该编写以下代码:

$sql="SELECT enabled FROM somecolumn.persist";
$result = mysql_query($sql);
if (!$result) {
    echo 'Could not run query: ' . mysql_error();
    exit;
}
$row = mysql_fetch_row($result);
$enabled=$row[0];
if ($enabled==0) {
    $query="UPDATE `somecolumn`.`persist` SET  `enabled` =  '1' WHERE `persist`.`enabled` =0";
} else {
    $query="UPDATE `somecolumn`.`persist` SET  `enabled` =  '0' WHERE `persist`.`enabled` =1";
}
mysql_query($query);

请注意,msql_函数已被弃用,并将在 php 的未来版本中删除。您应该考虑更改代码以使用 PDO 或 MySQLi 库。