2016-02-03 41 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',看看有什么情况发生。 –

相关问题