-1

私の上司は最近、いくつかの PHP コードを修正するように私に依頼しましたが、それは私の通常の仕事ではなく、元のコードを理解するのにいくつかの問題があります。

だから、これは私が得たものです:

//$query is set here
if ($result = mysql_query($query, $db)) {
  $number = mysql_num_rows($result);
  if ($number == 0) {
    echo 'Error!';
  }
  else {
    // do something
  }
} // etc

コードの最初の行が何かを行うかどうかはわかりません。なぜ彼はそのように書いたのですか?何があっても常に最初の「if」条件に入ると思いますが、正しいですか?前もって感謝します。

4

3 に答える 3

2
if ($result = mysql_query($query, $db)) {

$resultこれはtrue を返すかどうかをチェックして続行できるようにします。これは、コマンドを$return使用してデータベースへのクエリを実行し、クエリ自体と接続パラメーターmysql_queryの両方を変数として渡すだけです。これが false を返す場合、クエリにエラーがあることを意味します$query$db

mysql_query使用している機能に注意を向けたいと思います。それらは非推奨であり、もはや管理されていないため、どちらかPDOまたはについて学ぶ方がよいmysqli

于 2013-06-04T12:31:04.297 に答える
1
//$query is set here
if ($result = mysql_query($query, $db)) {

コードのこの部分は、データベース クエリがどうあるべきかを宣言し、それを実行しようとします。 myssql_queryデータベースにデータの要求を実行します (またはデータを入力しようとします) が、正しくフォーマットされていないか、データベースにエラーがあるか、別のサーバー上にありそのサーバーがダウンしているか、データベースが接続しているデータの制限に一致しないデータの問題。

いずれにせよ、データベースからデータを要求し、そのデータを に入れようとします$result。しかし - データベースにデータを入れる際に問題がある場合、 に入れるデータがなく$resultifステートメントはそれを false と見なし、最初の if ループに入りません。

    $number = mysql_num_rows($result);
    if ($number == 0) {

ある意味では、これは似たようなことをしています。以前のプログラマーは基本的に、何が起こっても、$queryデータに対するデータベース要求 (またはデータの入力) は、少なくとも 1 行のデータを返す必要があると宣言しています。すべてが正常に動作しているように見え、サーバーは動作しており、データベースも動作しており、クエリは拒否されていませんが、データ行が返されていない場合は、まだ何か問題があります。おそらくコードの論理エラーか、ユーザーが入力したフィールドの不適切な形式のデータか、誰にもわかりません。しかし、いずれにせよ、何も返されない場合、彼はここで何かが非常に間違っていることを示したいと考えています.

于 2013-06-04T12:40:21.763 に答える