テスト目的でこれを試しました。そして、なぜこれが起こっているのか分かりません。それは私が専門家の助けを必要としています。ありがとう。
データベースがあり、データベースとの接続が確立されていると仮定します。。という名前のテーブルがあるとしましょう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
なぜこうなった?前もって感謝します。