2013-12-22 14 views
-3

我有一些PHP代碼:如何通過將一個字符串的mysql_query

mysql_query("UPDATE people " . 
"SET first_name = '$fname' , last_name = $lname , email = $email , " . 
"age = $age , cityids = $city , gender = $gender WHERE id = $Recedit" 
or die (mysql_error)); 

但查詢不會運行。我究竟做錯了什麼?

+2

首先,你不應該使用'mysql_ *'命令。已棄用。你應該去'PDO'。其次,我認爲你只是有一個語法問題。注意你有'$ fname',但只有'$ lname'。您錯過了這些值的引號。如果您使用了'PDO',則可以使用參數化查詢,這將爲您處理此問題。 –

+0

你有錯誤信息嗎? –

+1

你已經在'first_name ='$ fname''周圍引用了引號,但是其他引號沒有。 –

回答

1

您的MySQL查詢格式不正確。 or die應該是之後的的查詢。

mysql_query("UPDATE people SET first_name = '$fname' , last_name = $lname , email = $email , age = $age , cityids = $city , gender = $gender WHERE id = $Recedit") or die (mysql_error); 

但同時,爲便於閱讀,我建議你做這樣的事情:

$query = "UPDATE people SET" 
     . " first_name = '" . $fname . "'," 
     . " last_name = " . $lname . "," 
     . " email = " . $email . "," 
     . " age = " . $age . "," 
     . " cityids = " . $city . "," 
     . " gender = " . $gender 
     . " WHERE id = " . $Recedit; 

mysql_query($query) or die (mysql_error); 

格式化查詢,以便它們是人類可讀的調試邏輯&格式錯誤時,一定要幫助你在日誌運行。

0

你必須從括號中得到「......或死」的東西。現在你在字符串本身和「死」命令之間進行邏輯「或」操作。此外,mysql_error是一個函數,所以:

// WRONG 
mysql_query("..............." or die(mysql_error)) 

// RIGHT 
mysql_query("...............") or die(mysql_error()) 

也許還有別的東西,但這肯定是一個錯誤。

+0

該函數仍舊不推薦使用。 – Strawberry

+0

這不是現在的觀點。類似的情況下,不推薦使用的函數的行爲也是一樣。 – dkellner

0

一旦你整理出一切這是錯誤/外的日期,您的查詢可能是這個樣子......

UPDATE people 
    SET first_name = '$fname' 
    , last_name = '$lname' 
    , email = '$email' 
    , age = $age 
    , cityids = $city 
    , gender = '$gender' 
WHERE id = $Recedit 
0

我會建議你

1 。編寫最簡單的代碼。像這樣:

$concat_query = "upate ... 
$result = mysql_query($concat_query); 
if ($result) { 
    if ((mysql_num_rows($result)) > 0) { 
    ... 

2.使用記事本++看到不同顏色的代碼段。

3.首先在數據庫上執行dbcode,之後再編寫代碼。

相關問題