php - 使用 PHP 更新 MySQL 数据库,将所有列设置为 0 而不是 1

标签 php mysql database

我正在更新一个数据库,当我更改一种症状时,我希望它将症状严重性行中的所有值重置为 0,但是当我更新该一种症状时,它会设置所有行为 0,而不仅仅是该行。这是我的代码,我在 if 语句中完成了它。如果您知道更简单的方法,也将不胜感激。

我没有使用 WHERE,因为我希望更改所有 id,而不仅仅是一个,并且它会动态生成它们。我有 20 个症状,仅在数据库中的 ID 1 中更新。抱歉,如果代码很糟糕,我对此还很陌生。

如果我一次更新所有 20 个,那很好,但如果我只更新一两个,它们都会被设置回 0。

mysql_select_db("$database", $conn) or die(mysql_error());

// if statements to delete this and that

$db="$id"."_symp";

$sql2 = "SELECT * FROM $db";

$getit = mysql_query ( $sql2, $conn );

// I know I'm using outdated SQL, but it works for me, so I keep using it
while($row = mysql_fetch_array($getit, MYSQL_ASSOC))
    {
        //symptom 1
        if ($_POST[symptom1] == $row[symptom1]) {
            print " ";
        }
        else {
            mysql_query("UPDATE $db SET symptom1_sev = '0'") OR die(mysql_error()); 
        }

        //symptom 2
        if ($_POST[symptom2] == $row[symptom2]) {
            print " ";
        }
        else {
            mysql_query("UPDATE $db SET symptom2_sev = '0'") OR die(mysql_error()); 
        }

        //symptom 3
        if ($_POST[symptom3] == $row[symptom3]) {
            print " ";
        }
        else {
            mysql_query("UPDATE $db SET symptom3_sev = '0'") OR die(mysql_error()); 
        }
        //and so on to 20

        //symptom 20
        if ($_POST[symptom20] == $row[symptom20]) {
            print " ";
        }
        else {
            mysql_query("UPDATE $db SET symptom20_sev = '0'") OR die(mysql_error()); 
        }

        //end sql stuff
    }

// update the database
$sql="UPDATE $db SET 
        symptom1='$_POST[symptom1]', symptom2='$_POST[symptom2]', symptom3='$_POST[symptom3]',       symptom4='$_POST[symptom4]', symptom5='$_POST[symptom5]', symptom6='$_POST[symptom6]', symptom7='$_POST[symptom7]', symptom8='$_POST[symptom8]', symptom9='$_POST[symptom9]', symptom10='$_POST[symptom10]', symptom11='$_POST[symptom11]', symptom12='$_POST[symptom12]', symptom13='$_POST[symptom13]', symptom14='$_POST[symptom14]', symptom15='$_POST[symptom15]', symptom16='$_POST[symptom16]', symptom17='$_POST[symptom17]', symptom18='$_POST[symptom18]', symptom19='$_POST[symptom19]', symptom20='$_POST[symptom20]' 
    WHERE id=1" OR die(mysql_error()); 

mysql_select_db('$database');
$retval = mysql_query( $sql, $conn );
if(! $retval )
    {
        die('Could not update data: ' . mysql_error());
    }
echo "Updated data successfully\n";

mysql_close($conn);

非常感谢。抱歉我是个n00b。或者是一个贵族,无论你喜欢叫我什么!

预先感谢您的帮助。

最佳答案

您可以使用以下查询一步更新所有症状:

$symptom1 = mysql_real_escape_string($_POST['symptom1']);
$symptom2 = mysql_real_escape_string($_POST['symptom2']);
...
$symptom20 = mysql_real_escape_string($_POST['symptom20']);

$sql = "
    UPDATE $db
    SET symptom1_sev = IF(symptom1 = '$symptom1', 0, symptom1_sev),
        symptom2_sev = IF(symptom2 = '$symptom2', 0, symptom2_sev),
        ...
        symptom20_sev = IF(symptom20 = '$symptom20', 0, symptom20_sev)";

关于php - 使用 PHP 更新 MySQL 数据库,将所有列设置为 0 而不是 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21636199/

相关文章:

php - 安全 $_GET 和 mysql 使用?

MySQL 触发器无法正常工作

database - SQL Developer 解释计划中断

javascript - 未捕获的类型错误 : undefined is not a function :/

php - 如何在名称 ActiveForm Yii2 中显示西里尔字母?

php - 在 PHP 中将多个 SCSS 文件编译到一个 CSS 文件中

javascript - PHP/JAVASCRIPT/SQL 无法显示表格

php - AWS RDS MYSQL 每秒写入操作计数

arrays - 将数据从 Firebase 读取到数组中

mysql - 使用 MySQL 了解主键和关系数据库 (phpmyadmin)