2013-10-09 33 views
0

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

$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); 

回答

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可言。

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库。