プロが教えるわが家の防犯対策術!

データ型 name varchar(30), item1 char(8), item2 int(6) で、テーブルが下記のようなっています。
| name |item1 | item2 |
| taro | abcd | 53 |
| taro | efghk | 48 |
| taro | lmnp | 02 |
while文で array_push($ydata, $row->item1) として $row = mysql_fetch_object($result) にデータを取得させたいのですが(スクリプト下記)、

$conn_id = mysql_connect("localhost","***","***") or die('Error connecting to MySQL');
mysql_select_db('***',$conn_id);
$query ="SELECT item1,item2 from XYZ where name='taro'";
$result = mysql_query($query,$conn_id) or die($query.'failed('.mysql_error().')');
$ydata = array();
while($row = mysql_fetch_object($result)){   ←10行目
// array_push($ydata, $row->item1);
     //  ここに下記の13、14行目を追記
}
var_dump($row);echo"<br />\n";
var_dump($result);
print_r($row); echo"<br />\n";

これでブラウザから見ると
bool(false)
resource(3) of type (mysql result) としか出ません。(19行目の結果は表示されません。)
そのため
13: echo "item1",$row['item1'],"<br>";
14 echo "item2",$row['item2'],"<br>";
と追記してブラウザから見ると、単に [ item1 ]とだけ表示されます。
10 行目を while($row = mysql_fetch_arrayt($result)){ に変えてブラウザから見ると
item1abcd
item253
imem1efghk
item250
item1lmnp
item258
bool(false)
resource(3) of type (mysql result)   となります。

$row = mysql_fetch_object($result) にデータを取得させるにはどのように修正すれば良いのでしょうか?

A 回答 (1件)

こちらに記載されているスクリプトを自分の環境にて叩いて試してみましたが、値が正常に取得できるようです。


array_fetch_objectで取得した値は、デフォルトでstdClassクラスに含まれるのでvar_dumpにもそのように出てくるもののはずですが、
今回bool(false)となるとのことですと、結果が取得できていない、というところになります。

質問上の記述で、var_dumpとprint_rの記述をwhile文外に書いてありますが、実際はwhile文の中に記載しておりますか?
<?php
while($row = mysql_fetch_object($result)){
var_dump($row);echo '<br />';
}
というようにwhile文内に記述した結果がfalseになるのでしょうか。
    • good
    • 0
この回答へのお礼

ご指導ありがとうございます。
> var_dumpとprint_rの記述をwhile文外に書いてありますが、

というご指摘を頂きましたので、中括弧の中に入れました。そうすると、array() 文が表示されるようになりました。
値は取得できているのですね!
array_push()のテストもうまく行きました。
何故、当初のテストが不調だったのか原因が分かりませんが、このスクリプトで良いと言うことを教えて頂きましたので、また、勇気が沸いてきました。本当に有難うございました。

お礼日時:2009/06/06 23:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!