0

私はこのPHPコードを持っています:

最初のルックアップ query-1 は正常に動作します..しかし、2 番目の 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 です。私は何を間違っていますか?
4

2 に答える 2

2

基本的には、mysql_affected_rows()がパラメータを取らないということです。更新のコンテキスト内では、影響を受ける行が出力されます。したがって、$result2 を渡す必要はありません。

それ以外の

$num2 = mysql_affected_rows($result2);

使用する

$num2 = mysql_affected_rows();

于 2013-03-02T17:28:28.957 に答える
0

実際、mysql_connect の結果を mysql_affected_rows に入れて、エラー メッセージを削除し、実際に影響を受けた行数を取得します。

于 2013-03-02T17:27:54.903 に答える