查找在PHP中完成的更新次数

时间:2013-02-21 09:40:03

标签: php mysql rows-affected

我正在做的是使用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.

这是对的吗?如果是对的,如何处理更新是否完成?

2 个答案:

答案 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更新,则无需使用。