SQL 更新语句不影响任何行 (PHP)



我目前正在做一个项目,想制作一个简单的页面来编辑组。我在 XAMPP 中一切正常,并尝试将其上传到服务器,但它不会影响数据库中的任何行。这是声明:

UPDATE user_groups 
SET name = 'TEST', 
name_short = 'test', 
color = 'green', 
category = 'MMORPG' 
WHERE id = 2

和:

Affected rows (UPDATE): 0 

是答案。创建新组工作正常(本地创建和编辑工作,由于我上传了两者,我没有更改语句中的任何内容(

这就是我试图影响的行的外观

编辑:

$sql_update_info = "UPDATE user_groups SET name = '$new_title', name_short = '$new_short', color = '$new_color', category = '$new_cat' WHERE id = $group_id";
$query_update_info = mysqli_query($mysqli, $sql_update_info);
printf("Affected rows (UPDATE): %dn", mysqli_affected_rows($mysqli));
echo '<br><span style="color:white;">'.$sql_update_info.'</span>';

是 PHP 部分在单击按钮时的样子。

1st:尝试使用预准备语句以避免SQL注入。

2nd :Execute()将返回 true 或 false,因此您需要处理如下所示的错误。

$stmt = $mysqli->prepare("UPDATE user_groups SET name = ?, name_short = ?, color = ?, category = ? WHERE id = ?");
$stmt->bind_param('ssssi', $new_title, $new_short, $new_color, $new_cat, $group_id);
//The argument may be one of four types:
//i - integer
//d - double
//s - string
//b - BLOB
//change it by respectively 
$r = $stmt->execute();
if(!$r){  
echo $stmt->error; 
}else{
$row_count= $stmt->affected_rows; 
}
$stmt->close();
$mysqli->close();

最新更新