我有一個數據庫正在更新,當我更改一個症狀時,我想讓它將症狀嚴重性行中的所有值重置爲0,但是當我更新那一個症狀時,它將所有行設置爲0,而不是僅僅那一行。這是我的代碼,我在if語句中做了。如果你知道一個更簡單的方法,它將不勝感激。用PHP更新MySQL數據庫,將所有列設置爲0而不是1
我沒有使用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。或者一個天秤,無論你喜歡給我打電話!
在此先感謝您的幫助。
你的'UPDATE'需要'WHERE'子句。(限制操作哪些行)請參閱:http://dev.mysql.com/doc/refman/5.0/en/update.html – 2014-02-07 19:30:59
如果這是一個新的應用程序,那麼您確實不應該使用大量過時的' mysql_query'接口。 – tadman
除非每個$ _POST都等於每個對應的$行,否則您的條件全部返回false。 –