我正在更新一个数据库,当我更改一种症状时,我希望它将症状严重性行中的所有值重置为 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/