0

我有以下我正在尝试执行的 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);
4

2 回答 2

1

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

$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

于 2013-10-09T01:15:09.957 回答
0

据此: 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 库。

于 2013-10-09T01:03:23.733 回答