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 に答える