我正在做的是使用PHP使用表格编辑MySQL数据的数据。
我有两个文字字段作为姓名和手机号码。当我点击编辑时,我在文本字段和下面获得相同的数据我有保存按钮。当我进行更改时,我会完成响应,但是当我单击编辑并且不在文本字段中进行任何更改并单击“保存”时,我会将响应视为失败。
以下是SAVE按钮的代码。
$sql = mysql_query("
UPDATE userInfo SET fullName='$fullName',
mobileNumber='$mobileNumber'
WHERE id=$tagNumberId"
);
if (mysql_affected_rows()==1) {
echo "done";
} else {
echo "fail";
}
我担心mysql_affected_rows()
。
上面让我觉得如果UPDATE语句中的数据相同,mysql_affected_rows()
将返回0,如果UPDATE语句中的数据不相同,mysql_affected_rows()
将返回1.
这是对的吗?如果是对的,如何处理更新是否完成?
答案 0 :(得分:3)
执行查询后立即使用mysqli_info
$string = mysqli_info ( $link );
返回一个包含相关信息的字符串,例如UPDATE
Rows matched: 40 Changed: 40 Warnings: 0
在你的情况下,一行更新但没有变化,你应该得到
Rows matched: 1 Changed: 0 Warnings: 0
您可以从
中检索值preg_match("/Rows matched: (\d+)/", $string, $matches);
$number_of_rows = intval($matches[1]);
答案 1 :(得分:1)
这是UPDATE的mysql行为。 但如果你真的想要这个,你可以使用一些wiered技巧。
$sql = mysqli_query("UPDATE userInfo SET id=@id:=id
fullName='$fullName',
mobileNumber='$mobileNumber'
WHERE id=$tagNumberId");
$result = mysqli_query($link, 'select @id');
if (array(null)!==mysqli_fetch_row($result)) {
echo "done";
} else {
echo "fail";
}
P.S。您必须为您的应用程序使用预准备语句。
P.P.S。使用此方法您无法识别计数,但如果您使用id更新,则无需使用。