mysql_fetch_rowが1を返すことがある

このQ&Aのポイント
  • mysql_fetch_row関数での1の返り値について説明します。
  • mysql_queryでselect文のクエリを発行した場合、成功時にはリソースID、失敗時にはFALSEを返します。
  • 上記の警告が出る場合、mysql_fetch_rowの引数に有効なMySQLの結果リソースが渡されていない可能性があります。
回答を見る
  • ベストアンサー

mysql_fetch_rowが 1 を返すことがある

プログラムコードが多いのですべては載せられないのですが $rid = mysql_query($query = "select base from boards where base='$base'");//base は text型 $rid || die("$query :" . mysql_error() . "\n"); echo "rid: $rid \n"; if (! mysql_fetch_row($rid)) { // そんな行は無い場合の処理・・・ } という箇所で、ときどき rid: 1 Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /path/ to/htdocs/collect.php on line xx という警告が出ることがあります。 mysql_query()でselect文のクエリを発行した場合は成功時にリソースID、クエリ失敗時に FALSE を返すとマニュアルにはあります。 たしかに上記部分が正常に動作する場合は、 rid: Resource id #102 といったリソースIDが表示されます。 では単純に 1 を返す場合は何を意味しているのでしょうか?

  • PHP
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.1

返り値 SELECT, SHOW, DESCRIBE や EXPLAIN 文、その他結果セットを返す文では、 mysql_query() は成功した場合に resource を返します。エラー時には FALSE を返します。 それ以外の SQL 文 UPDATE, DELETE, DROP などでは、 mysql_query() は成功した場合に TRUE 、エラー時に FALSE を返します。 "set names utf8" などもTRUEが返ります。

__LINE__
質問者

お礼

ソースコードは上記の通りで、クエリはSELECTなのでTRUEは返し得ないはずなのですが・・・ 実際に1が返った場合の $query はselect文でした。

__LINE__
質問者

補足

それとタイトルを間違えていました。 mysql_fetch_rowが 1 を返すことがある ではなく mysql_queryが 1 を返すことがある です。 ご回答ありがとうございました。

関連するQ&A

  • mysql_fetch_objectにデータを取得させたいのですが、うまく行きません。

    データ型 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) にデータを取得させるにはどのように修正すれば良いのでしょうか?

    • ベストアンサー
    • PHP
  • mysql_fetch_array の関数について

    はじめまして、お世話になります。 php/SQL共に初心者レベルなのですが、ご指導ください。 mysql_fetch_array のSQLの結果が複数件ある場合なのですが、 参考書通り $sql = "select * from category where parent_id = '0' order by category_name"; $result = mysql_query( $sql ); while ( $category = mysql_fetch_array( $result ) ) echo "<a href=result.php?category_id=${category['category_id']}>${category['category_name']}</a> | "; とコーディングしたものの、 Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/アカウント名/public_html/アカウント名/topbar.php on line 26 とエラーが表示され困っています。 参考書にもエラーの詳細など記載れていませんし、他の媒体での色々と答えを探してはみたものの意味がわかりません。 解る方いらっしゃいましたら是非ご指導ください。 宜しくお願いします。

    • 締切済み
    • PHP
  • mysql_fetch_objectのエラー

    環境:XAMPP ver2.5.8 エラーメッセージ: Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\roll\y3.php on line 17 shop_id のフィールドは、DB側のフィールドの種別でint(11) で設定してます。 これまでは 下記の書き方で正しくDBからshop_idを持ってきて正しく動いてました・・ 17行目:while ($row = mysql_fetch_object($shop_id)){ 18行目:$shop_p = $row->shop_id; 19行目:$_rawData = getURL( "http://www.abc.com/".$shop_p"); 今回、shop_id のフィールドの種別をtextに変えたらエラーとなった状況です。 変えた理由は、shop_id のフィールドには、英数字やハイフンが混じっていたので int(11)ではなく、textにした次第です。 おそらく 種別を変えればエラーはなくなるのだろうと思ってますが、 何に変えるのがよろしいのでしょうか? 良きアドバイスをいただければ幸いです。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • mysql_fetch_objectの書き方を教えて下さい。

    PHP5.1.6を使用しています。 次のスクリプトを書きましたが、データが取得できません。 $conn_id = mysql_connect("localhost","***","***") or die('Error connecting to MySQL'); mysql_select_db('***',$conn_id); $query ="SELECT abcd,efgh from XYZ where name='taro'"; $result = mysql_query($query,$conn_id) or die($query.'failed('.mysql_error().')'); $ydata = array(); $xdata = array(); while($row = mysql_fetch_array($result)){  ← 11行目 array_push($ydata, $row->efgh);   ← 12行目 array_push($xdata, $row->abcd);   ← 13行目 } エラーログを見ると、 PHP Notice: Trying to get property of non-object in /***/***/****.php on line 12 PHP Notice: Trying to get property of non-object in /***/***/****.php on line 13 となっています。 var_dump($row) 句を入れ、ブラウザから見ると、当然ながら(?)bool(false) と表示されます。 11行目の mysql_fetch_array を mysql_fetch_object に入れ換えて while($row = mysql_fetch_object($result)){ としても結果は変わりません。 リファレンスマニュアルやサンプルを参照して種々手直ししましたが、今ひとつ正解に辿り着けません。 データを取得して配列に入れるには、どのように修正すれば良いか、教えて頂けませんでしょうか。

    • ベストアンサー
    • PHP
  • ホームページを製作していて、以下の表示がされます。

    ホームページを製作していて、以下の表示がされます。 Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/users/0/lolipop.jp-4714bf268f410dba/web/contents/qa/qa.php on line 13 Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/users/0/lolipop.jp-4714bf268f410dba/web/contents/qa/qa.php on line 18 ソース部分を表示してみると、 //-サブメニューテーブル--------------------------------------// $con = mysql_connect("mysql517.phy.lolipop.jp","LA05915237","kyoyutt"); mysql_select_db("LA05915237"); $sql="select * from submenu where id=1 "; $rs=mysql_query($sql); $row=mysql_fetch_array($rs);   ← この部分が、13行目 //-トップパーツテーブル--------------------------------------// $sql="select * from topparts where id=1 "; $rs=mysql_query($sql); $row1=mysql_fetch_array($rs);  ← この部分が、18行目 なにがおかしいのでしょうか? MySQL5なのですが、MySQL4の時には、上記エラーは出ないで動作しておりました。 教えてください。

  • mysql_fetch_assoc()の非推奨

    phpを始めてまだ数ヶ月の初心者です。 (少々表現が変なところはお許し下さい。) ■やりたい事 phpである登録画面を作成しています。サーバーには スタッフのデーターが入っているテーブルがあります。 (1)DBに登録してあるスタッフの名前を全部引っ張り出す(mysql)。 (2)登録画面の入力項目の1つとして(登録スタッフ)があり、  そこを<select>で上記(1)から取り出したものを自動で表示したい。 ところが、mysql_fetch_assoc()について調べたら、非推奨などと載っていて (内容がよく理解できませんでしたが)どのように記述したら、将来困らない  コーディングとなりますか? <select name="register"> <?php $sql = "select count_ID, name from reserve"; $result = mysql_query($sql); while ($row = mysql_fetch_assoc($result)) { echo "<option value=\"".$row["count_ID"]."\">" .$row["name"]."</option>"; } ?> </select> 今からphpの知識を少しづつつけていくにあたり、非常に混乱して います。mysqlをそもそも学んでいてもしょうがないということでは ないですよね。本当に初心者なので、お手数ですがわかりやすい表現 でお願いします。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • MySQLにつなぐことができない。

    PHPで、データベースからデータを取得しようとしたのですが、データベースもパスワードもデータも完璧なのに、以下のようなエラーが出てしまい、1週間不眠不休で調べましたが、全く解決できません。 <エラー> Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in C:\xampp\htdocs\merhen\data\index.php on line 98 Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\merhen\data\index.php on line 99 Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\merhen\data\index.php on line 101 <コード> $sqli="select * from $news_table where order by id desc limit 5"; //SQLで引き抜いて変数に格納する if(($dbhi = mysql_connect($host,$database_user,$database_password)) != FALSE){ mysql_select_db($dbname) or die("Connect Error!"); $resi = mysql_query($dbhi,$sqli); $counti = mysql_num_rows($resi); エラーの意味は分かるんですが、全く解決策がわからないので、精魂尽き果ててしまいそうな状態です。 納期が明日ですので、すぐに回答がいただければと思います。 XAMPP1.6.3a及びPHP5.2を使用しています。

  • Warning: mysql_num_rows()

    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in と、phpでエラーが出ます。調べた結果クエリに問題があるということです。 クエリは $query = "select name,jyusyo,kakaku,gazou,link from kensaku order by kakaku asc"; です。なにがおかしいのでしょうか??カカクカラムを昇順に呼び出したいのですが。。。

    • ベストアンサー
    • MySQL
  • phpのmysql_fetch_arrayに該当する関数はありますか?

    以下のようなphp、MySQLのセレクト文は perlだとどのようになるのでしょうか? $sql="SELECT abc,xyz FROM table "; $res=mysql_query($sql,$con) or die("データベースを検索できませんでした。 mysql_error(); "); $i=0; while($row=mysql_fetch_array($res)) { $abc[$i]=$row['abc']; $xyz[$i]=$row['xyz']; $i++; }

    • ベストアンサー
    • Perl
  • mysql_num_rowを繰り返したい

    ラジオボタン選択肢アンケートのデータをMySQLのテーブルに入れて、 mysql_num_row()で各選択肢の件数を抽出したいのですが。 選択肢は1~5の数値(int型)でanテーブルに入っています。 for ($i = 1; $ <= 5; $++) { $rst = mysql_query("SELECT * FROM an WHERE field=$i", $con); $kotae.$i = mysql_num_row($rst); } このように書くと 1の選択肢の数しか返してきません。しかも、件数が間違って返ってくる。  文法が間違っているからだと思うのですが。上記のようなことをやりたいのです。  forを使わないでやると、 $rst = mysql_query("SELECT * FROM an WHERE field=1",$con); $kotae1 = mysql_num_rows($rst); $rst = mysql_query("SELECT * FROM an WHERE field=2",$con); $kotae2 = mysql_num_rows($rst); $rst = mysql_query("SELECT * FROM an WHERE field=3",$con); $kotae3 = mysql_num_rows($rst); $rst = mysql_query("SELECT * FROM an WHERE field=4",$con); $kotae4 = mysql_num_rows($rst); $rst = mysql_query("SELECT * FROM an WHERE field=5",$con); $kotae5 = mysql_num_rows($rst); です。  forを使って楽にやりたい場合はどうすればよいでしょうか 宜しくお願いいたします。

    • ベストアンサー
    • PHP

専門家に質問してみよう