SQL 在运行更新命令时创建新行


SQL creates new row when I run an update command

我有这个脚本(如下),旨在更新表中特定行的值。我正在按 ID 搜索,该 ID 设置为自动递增的主键整数。当我运行此脚本时,该行不会更新 - 而是创建一个全新的行。

代码如下:

$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();

首先,我认为是时候从MySQL进入MySQLi或PDO了。

其次,您需要对字符串使用 ' 以及 WHERE 子句中的错误:

id=$'id'

您可以像这样轻松使用:

id=$id

或:

id='$id'

替换这个:

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

有了这个:

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