0

私はmysql updateステートメントを持っていますが、行が更新されたときと行が更新されていないときにtrueを返します。

行が変更されたかどうかを知りたい。

ここに私のクエリがあります:

$q=mysql_query("UPDATE results set marks='$mark' and total='$total'
                 where result_id='$rid'");


if($q){
      echo 'rows updated';
   }
else{
      echo 'No row was updated';
   }

レコードが更新されていないかどうかに関係なく、常に「行が更新されました」というメッセージを出力します。

助けてください。

4

2 に答える 2

2

mysql_affected_rows()おそらく代わりに欲しいでしょう。

ドキュメントから:

link_identifier に関連付けられた最後の INSERT、UPDATE 、REPLACE、または DELETE クエリによって影響を受けた行の数を取得します。

mysql_*関数は非推奨であることに注意してください。代わりに、 MySQLiまたはPDOに切り替えることをお勧めします ( SQL インジェクションから安全にするために、パラメーター化されたクエリの使用を開始します) 。

于 2013-11-06T16:08:32.137 に答える
0

まず、適切な構文は次のとおりです。

UPDATE results
    set marks='$mark', total='$total'
    where result_id='$rid';

次のように表現できます。

UPDATE results
    set marks='$mark', total='$total'
    where result_id='$rid' and marks <> '$mark' and total <> '$total';

新しいバージョンの値が古い値と同じであっても、選択した行の変更を報告するかどうかは、MySQL のバージョンによって異なると思います。

于 2013-11-06T16:08:23.760 に答える