2012-10-22 31 views
1

作爲我試圖插入的新手MySQL用戶,但我只是閱讀了MySQL文檔,您只能在空白行上插入。我的UPDATE語句需要工作,但我不確定我的語法是否正確。來自PHP的MySQL更新形式

$query3 = "UPDATE `offices` SET `scash`="$total" WHERE `officename`="$office""; 

辦事處是表名。 scash是要更新的行。 $ total是從帖子中拉出的變量。 $ office是一個從同一個數據庫中提取的變量。我只想設置一個地方,就是完美的辦公室。

解析錯誤:語法錯誤,意外T_VARIABLE是我得到的錯誤。

+1

請學習如何使用[正確的SQL逃逸(http://bobby-tables.com/php)你傷害自己之前。這個查詢非常**非常危險。 – tadman

回答

2
$query3 = "UPDATE `offices` SET `scash`='$total' WHERE `officename`='$office'"; 

替換正常引號的雙引號字符串中,因爲雙引號是字符串分隔符,不能在字符串中使用。

而且,正如Marc B所提到的,您的代碼對於SQL注入來說可能是可行的。請參閱this post如何避免這種情況。

+4

和一般的PHP新手,最好提一下關於[SQL注入](http://bobby-tables.com) –

+0

我真的很感謝你的努力。沒有你們,我不知道我會做什麼。 – smada

+0

說謝謝的最好方法是學習PDO或'mysqli',這樣你就不會再陷入這個陷阱。 – tadman

1

你走錯了在報價

$query3 = "UPDATE `offices` SET `scash`="$total" WHERE `officename`='$office'"; 

而且總是用LIMIT 1如果要更新一個單行...

和消毒你的投入更新行之前,至少使用mysqli_real_escape_string()

+0

在'UPDATE'上使用'LIMIT 1'是個不好的建議。如果你遇到限制問題,你的'WHERE'子句應該更具體。 – tadman

+0

@tadman同意,但使用**'LIMIT 1' **沒有傷害** –

+0

是的,有傷害。這對於一個人來說是沒有意義的,其次是導致虛假的安全感。隨機更新一行是瘋狂的。 – tadman

1

如果你仍然想有雙引號逃避它用雙引號..

查詢可以作如下修改..

$query3 = "UPDATE `offices` SET `scash`=\"$total\" WHERE `officename`=\"$office\"";