2

テスト目的でこれを試しました。そして、なぜこれが起こっているのか分かりません。それは私が専門家の助けを必要としています。ありがとう。

データベースがあり、データベースとの接続が確立されていると仮定します。。という名前のテーブルがあるとしましょうtable。テーブル内には、idとnameの2つの列があります。テーブルには5行のデータがあります。テーブル構造は

| id |  name  |
---------------
| 1  |  name1 |
| 2  |  name2 |
| 3  |  name3 |
| 4  |  name4 |
| 5  |  name5 |

今私のコードはここに行きます-

    <?php
    mysql_connect("localhost","root","") or die(mysql_error());
    mysql_select_db("test") or die(mysql_error());

    $result  = mysql_query("SELECT * FROM `table`");

    /* let's store this value in two different variables. */

    $result1 = $result;
    $result2 = $result;

    /* let's perform mysql_fetch_array() and mysql_fetch_row() functions */
    $result22 = mysql_fetch_row($result);
    var_dump($result22);
    $result11 = mysql_fetch_array($result);
    var_dump($result11);
?>

結果:

array
  0 => string '1' (length=1)
  1 => string 'name1' (length=5)

array
  0 => string '2' (length=1)
  'id' => string '2' (length=1)
  1 => string 'name2' (length=5)
  'name' => string 'name2' (length=5)

関数の順序を変更すると、次のようになります。

array
  0 => string '1' (length=1)
  'id' => string '1' (length=1)
  1 => string 'name1' (length=5)
  'name' => string 'name1' (length=5)

array
  0 => string '2' (length=1)
  1 => string 'name2' (length=5)

mysql_queryの結果に対して関数を実行すると、その関数は、関数を呼び出す前に他の変数に格納されている場合でも、結果から最初の行を削除するだけのようです。

WHERE id= 1の条件を追加すると、2番目の関数は次のようにfalseを返します。

array
  0 => string '1' (length=1)
  'id' => string '1' (length=1)
  1 => string 'name1' (length=5)
  'name' => string 'name1' (length=5)

boolean false

なぜこうなった?前もって感謝します。

4

1 に答える 1

2

この行は「結果」を返しません。結果にアクセスするために使用できるリソースオブジェクトを返します。

$result = mysql_query("SELECT * FROM `table`");

これらの行は、同じリソースを2つの異なる変数に割り当てるだけです。

$result1 = $result;
$result2 = $result;

それを2つの別々の結果セットと考えるべきではありません。同じリソースに2つの異なる名前を付けました。

于 2012-04-27T17:59:10.670 に答える