任何人都可以发现这个php/mysql UPDATE代码中的错误- mysql_affected_rows()返回是错误


Can anyone spot a mistake in this php/mysql UPDATE code - mysql_affected_rows() return is wrong

我有这样的PHP代码:

第一个查找query-1工作正常。但第二个query2工作良好,但mysql_affected_rows()没有告诉我,如果记录已更新,为什么?

谢谢。


$uemail  = 'driggg2@gmail.com';
$authkey = '2f4071bffda44aa30064364055687d13';
require_once ('./domainsiteconnect.php'); // Connect to the database.
if ( $uemail && $authkey)
{
echo "<br>--uemail: [$uemail] -- && -- [$authkey] --- ";
$query1 = "SELECT * FROM member WHERE email='$uemail' AND actkey='$authkey' AND status='pending' ";
    $result1 = mysql_query ($query1);
    $num1 = mysql_num_rows ($result1);
    if ( $num1 == 1 )  // Exactly 1 rec found - Update member to verified.
    {
       echo '<br>+++ query1: successful +++>br>';
        $status = 'verified';
$query2 = " UPDATE member SET status='$status' WHERE email='$uemail'   ";    //AND actkey='$authkey'  ";
    //- $query2 = " UPDATE member SET status='$status' WHERE email='$uemail' AND actkey='$authkey'  ";
    $result2 = mysql_query($query2);
    $num2 = mysql_affected_rows($result2);

        if ( $num2  )  //  updated? - inform user
        {
            echo "<br>--$uemail updated to verified --";
        }
        else
            echo "<br>--$uemail  verfication [update] failed --";
            $val1=mysql_errno();
        $val2=mysql_error();
        //-- 
echo '<br>['.$query2.']--<br>--['.$result2.']<br>val-1:'.$val1.'<br> val-2'.$val2;

            }
    }   //-- eof. if auth/email flags ok ---

========================

结果输出为:

 --uemail: [driggg2@gmail.com] -- && -- [2f4071bffda44aa30064364055687d13] ---
 +++ query1: successful +++>br>
 Warning: mysql_affected_rows() expects parameter 1 to be resource, boolean given in /home/arif/public_html/amy/public/domainsite/verifyfirst.php on line 125
 --driggg2@gmail.com verfication [update] failed --
[ UPDATE member SET status='verified' WHERE email='driggg2@gmail.com'; ]--
--[1]
val-1:0
val-2

我认为,警告是因为query2没有返回mysqL_affected_rows()所需的资源id。

  • db和table都是utf8格式。我做错了什么?

基本上它的状态是mysql_affected_rows()不接受任何参数。在更新的上下文中,它将输出受影响的行。因此,您不需要传递$result2.

不是

$num2 = mysql_affected_rows($result2);

使用

$num2 = mysql_affected_rows();

确实,将mysql_connect的结果放入mysql_affected_rows中以消除错误消息并获得实际受影响的行数