0

我正在做的是使用 PHP 使用表单编辑 MySQL 数据的数据。

我有两个文本字段作为姓名和手机号码。当我点击编辑时,我在文本字段中得到相同的数据,下面我有保存按钮。当我进行更改时,我得到了响应,但是当我单击编辑并且不在文本字段中进行任何更改并单击保存时,我得到响应失败。

下面是保存按钮的代码。

$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。

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

4

2 回答 2

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]);
于 2013-02-21T10:47:27.483 回答
1

这是正确的mysql行为UPDATE。但是如果你真的想要这个,你可以使用一些诡异的技巧。

$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";
}

PS 你必须为你的应用程序使用准备好的语句。

使用这种方法的 PPS,您无法识别计数,但如果您对 id 使用更新,则无需。

于 2013-02-21T10:08:40.873 回答