PHP表单更新字符串,总是返回成功

rm6*_*453 1 php sql forms

我试图使用PHP表单来更新SQL数据库.

花了好几个小时后我终于能够更新数据库,但即使找不到与字符串匹配的行,问题仍然存在,它仍然会返回消息"已成功更新数据".我检查了数据库,并没有输入任何其他的输入,但我真的想让用户知道他们错误输入ID.

谢谢

if (isset($_POST['update'])) {
    $dbhost = 'localhost';
    $dbuser = 'user';
    $dbpass = 'password';
    $conn = mysql_connect($dbhost, $dbuser, $dbpass);

    if (! $conn ) {
        die('Could not connect: ' . mysql_error());
    }

    $UniqueID = mysql_real_escape_string($_POST['UniqueID']);
    $Referral = mysql_real_escape_string($_POST['Referral']);

    mysql_select_db('database');

    $sql = "UPDATE tablename set Referral = '$Referral' WHERE ID = '$UniqueID'"; 

    $retval = mysql_query( $sql, $conn );

    if(! $retval ) {
        die('Could not update data: ' . mysql_error());
    } else {
        echo "Updated data successfully\n";
    }

   mysql_close($conn);
}
Run Code Online (Sandbox Code Playgroud)

谢谢

Mar*_*c B 5

那是因为不更改任何行的更新不是失败.它只是一个更改/发现/影响没有行的查询.

您需要检查mysql_affected_rows().

例如

$result = mysql_query(...);
if ($result === false) {
    die(mysql_error()); // something blew up completely
} else if (mysql_affected_rows() == 0) {
    ... nothing was changed
}
Run Code Online (Sandbox Code Playgroud)

sql中的失败是由于语法错误,通信错误或违反约束的"元"错误.空结果集是一个完全有效的结果集,恰好是空的.