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

时间:2017-08-14 08:13:36

标签: php mysql mysqli sql-update

我目前正在处理一个项目,并希望创建一个可以编辑组的简单页面。我在XAMPP中一切正常并尝试将其上传到服务器,但它不会影响数据库中的任何行。这是声明:

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

Affected rows (UPDATE): 0 
答案是答案。创建新组工作正常(本地创建和编辑工作,并且自从我上传两者后,我没有更改语句中的任何内容)

This is what the row looks like that I am trying to affect

编辑:

$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): %d\n", mysqli_affected_rows($mysqli));

echo '<br><span style="color:white;">'.$sql_update_info.'</span>';

单击按钮时,PHP部分是什么样的。

1 个答案:

答案 0 :(得分:1)

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

第二名: 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();