2016-02-03 19 views
1

我有這個腳本(下面),它是爲了更新表中特定行的值。我正在通過ID進行搜索,該ID被設置爲自動遞增的主鍵整數。當我運行這個腳本時,行不會更新 - 相反,會創建一個全新的行。當我運行更新命令時,SQL創建新行

下面的代碼:

$link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD); 

if (!$link) { 
    die('Could not connect: ' . mysql_error()); 
} 

$db_selected = mysql_select_db(DB_NAME, $link); 

if (!$db_selected) { 
die('Can\'t use ' . DB_NAME . ': ' . mysql_error()); 
} 

$id = $_POST['id']; 
$certLevel = $_POST['certlevel']; 

$sql = "UPDATE jcontact SET certlevel='$certLevel' WHERE id=$'id'"; 

if (!mysql_query($sql)) { 
    die('Error: ' . mysql_error()); 
} 

mysql_close(); 
+1

爲什麼你用'id = $'id''? –

+0

看看'$'id''。這是你爲什麼應該停止使用'mysql_ *'函數並更新到'mysqli'或'PDO'並使用準備/參數化語句的一個很好的例子。 – Sean

回答

1

首先,我認爲它的時間從MySQL旅行到庫MySQLi或PDO。

其次,你需要使用'字符串和自己的錯誤你的WHERE子句中:

id=$'id'

您可以輕鬆地使用這樣的:

id=$id

或:

id='$id'

1

替換此:

$sql = "UPDATE jcontact SET certlevel='$certLevel' WHERE id=$'id'"; 

有了這個:

$sql = "UPDATE jcontact SET certlevel='$certLevel' WHERE id='$id'"; 
+0

謝謝,但它沒有奏效。任何其他可能的更改? – Bora

+0

此外,ID是一個數字 – Bora

+0

寫您的查詢的'phpmyadmin',看看有什麼情況發生。 –