• 締切済み

the right syntax to use near 'Resource id #*'

いつもお世話になります。思い切ってまたお尋ねします。 環境はPHP4.4.7+MySQL5.0.41です。 mysql> CREATE TABLE bbb( -> id MEDIUMINT NOT NULL AUTO_INCREMENT, -> hiduke DATE, -> apple INT, -> orange INT, -> comment VARCHAR(30), -> PRIMARY KEY (id));  として ----+------------+-------+--------+---------+ | id | hiduke | apple | orange | comment | +----+------------+-------+--------+---------+ | 1 | 2007-10-01 | 25 | 63 | zansuu | | 2 | 2007-10-02 | 30 | 134 | hacchu | | 3 | 2007-10-03 | 28 | 92 | nyuuka | | 4 | 2007-10-04 | 41 | 151 | uriage | | 5 | 2007-10-05 | 14 | 4 | zansuu | +----+------------+-------+--------+---------+ というテーブル[bbb]を作り、フィールド(カラム)のデータを一連に取得したいと思っています(例えばappleの数なら25,30,28・・・・・というように)。 <?php mysql_connect(localhost,PQR,*****); mysql_select_db(XYZ); $sql=mysql_query("select hiduke from bbb");  //または "select apple from bbb" mysql_query($sql) or die(mysql_error().$sql."<br>"); $rows=mysql_num_rows($sql); if($rows == 0){ print "データがありません"; }else{ print($rows["hiduke"]); print "<p>\n"; } ?> と実行すると、 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Resource id #3' at line 1Resource id #3 というエラーが出ます。いろいろ調べましたが、意味がわかりません。何がいけないのでしょうか?

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

みんなの回答

  • asuncion
  • ベストアンサー率33% (2126/6288)
回答No.1

> $sql=mysql_query("select hiduke from bbb"); >  //または "select apple from bbb" > mysql_query($sql) or die(mysql_error().$sql."<br>"); 1行目のmysql_queryの結果を$sqlに格納して、 それを使って再びmysql_queryを実行していますが、 正しいのでしょうか?

spindle
質問者

補足

ありがとうございます。いろいろ試していますが、うまくいかないです。コンソール上で mysql> select hiduke from bbb; とすると、データが取得できますが、 <html> <body> <?php mysql_connect(localhost,PQR,*****); mysql_select_db(XYZ); $sql=mysql_query("select hiduke from bbb"); mysql_error(); print($sql); ?> </body> </html> としてブラウザから見ると、Resource id #3  と出てしまい、データが取得できません。hidukeを'hiduke'とコンマで囲っても同じです。 どこが悪いのでしょうか? よろしくお願いします。

関連するQ&A

  • Resource idの渡し方

    下のようにエラーメッセージが出ました。 Warning: PostgreSQL query failed: ERROR: pg_atoi: error in "Resource id #3": can't parse "Resource id #3" in /home/***/write.php on line 29 cannot connect データベースの主キー(serial)を別のテーブル(category_xref)で外部キーとして使おうとしたのですが、どうもテーブル(category_xref)でgcode がinteger で定義されているため、エラーが帰ってきているようなのです。 Resource idはどうやって別のテーブルに渡せばよいのでしょうか? すいません、どうぞご回答よろしくお願いいたします。 // serial 型のGCODE値の取得 $sql = "select currval('gurume_gcode_seq')"; $gcode = pg_exec($db_con, $sql); if($gcode == false) {print "cannot connect"; exit;} // category_xrefテーブルへの登録 for ($i=0; $i<count($cname); $i++) { // 配列 $cname をカウント。 count($cname)にはチェックボックスをチョイスした個数が入っている $sql = "insert into category_xref (gcode,ccode) values ('$gcode','$cname')"; // 店情報の登録 $rs = pg_exec($db_con, $sql); if($rs == false) {print "cannot connect"; exit;} }

    • ベストアンサー
    • PHP
  • Resource id #3 をフィールドの内容にしたい

     昨日まで,データのカウントと,リンクについてご指導をいただいた者ですが,その後ご指導された内容を検討しても解決できず,また質問いたしました。よろしくお願いします。  まずは,プログラムですが,主要なところだけ載せます。 <?php ~接続部分は省略~ $link = "select link from table where No = $_GET[id]"; $linksaki = mysql_query($link, $con); header("location: ".$linksaki); exit; ?>  データベースから,選択したIDのフィールドlinkにあるURL内容を,"location: "で移動させたいと思っています。この命令の結果は,”Object not found!”つまり,リンク先が見つからないでした。よくよく見てみると,URL部分に「Resource id #3」を意味する「http://...../Resource%20id%20#3」と入っている。つまり,$linksakiにはURLが入っていないということになります。  いろいろ調べましたが,「Resource id #3」の意味は,「データにアクセスして返ってきました」の様な結果の内容なので,データ化する必要があるとのことから,「mysql_fetch_array」や「sprintf」なども試してみましたが,うまくいきませんでした。  初心者ながら,あと少しというところまできたので,「なんとか自分で!!」と検証してみましたが,心が折れてしまいました…。どなたかご指導いただければと思っています。どうぞよろしくお願いします。

    • ベストアンサー
    • PHP
  • mysql_query等でレコード数を変数に格納

    mysql> SELECT COUNT(id) AS rows FROM someTABLE WHERE name IN ( 'A','B','C' ) ; で +------+ | rows | +------+ | 9 | +------+ と出すことができます。 この rows の数「9」を php の変数に入れたいのです。 <?php // DB接続省略 $sql = "SELECT COUNT(id) AS rows FROM someTABLE WHERE name IN ( 'A','B','C' )" ; $result = mysql_query($sql, $conn); var_dump($sql."<br />"); echo ($result."--result"."<br/>"); $rows= mysql_num_rows($result); echo ($rows."--rows"."<br/>"); ?> として、ブラウザで確認すると string(80) "SELECT COUNT(id) AS rows FROM someTABLE WHERE name IN ( 'A','B','C' ) " Resource id #3--result 1--rows となって、 $rows に値’9’が入りません。$rows にレコード数を取得させるには、どうすれば良いでしょうか?

    • ベストアンサー
    • PHP
  • コメント部のエラー

    お世話になっております。 只今、フォームに入力したデータをPHPにてMySQLへPOSTする、といったスクリプトを組んでいるのですが、$sql3 = "insert into saller values(null..... という所で下記のようなエラーが出てしまいます。 parse error, unexpected T_STRING in 実はこのスクリプト、他で同じものを記述しているのですが、他では一切問題なく登録が出来ます。 しかしながら、記述ミスかな?などと思いながら試行錯誤を繰り返しているのですが、試にと、//コメントアウトして動かしたところ、やはり同じ場所で同じエラーが表示されてしまいます。 以上、コメントとして処理してもエラーが出た事に戸惑い、何処をどう処理して良いか分からずにおります。ご指導頂ければ有難いのですが・・・宜しくお願いいたします。 追伸:上記スクリプト内で$sql3ですが、以下のようなスクリプトから、素人ながらテーブルがダブらないようにと、分別してみたのですが、プログラミング上、このような記述は適切なのか否か、ということを諸先輩方々の意見も頂戴できれば幸いです。 (途中、省略しております) mysql_connect('localhost','root','******'); mysql_select_db('member'); $hiduke = date("y-m-d"); $sql= "select loginid from test where loginid like '$id'"; $result = mysql_query($sql); $rows = mysql_num_rows($result); if($rows <> 0){ $sql2 = "update test set    ・    ・ mysql_query($sql2); }else{ $sql3 = "insert into saller values(……)";//ココでエラー mysql_query($sql3); }

    • ベストアンサー
    • PHP
  • foreachの表示に追加するには

    http://okwave.jp/qa2460708.html と同じようなテーブル構造で、同じようなhtmlへの書き出しを行っています。 No.1さんの回答の下記のスクリプトを参考にし、うまく表示することができました。 $sql="SELECT `ID`,`SHOPNAME` FROM `SHOP`"; $res = mysql_query($sql,$link); while ($rows = mysql_fetch_assoc($res)) { $SHOP[$rows["ID"]]=$rows["SHOPNAME"]; } $sql="SELECT `ID`,`ITEMNAME` FROM `ITEM`"; $res = mysql_query($sql,$link); while ($rows = mysql_fetch_assoc($res)) { $ITEM[$rows["ID"]]=$rows["ITEMNAME"]; } foreach($SHOP as $key1=>$val1){ foreach($ITEM as $key2=>$val2){ $LINK[$key1][$key2]="&nbsp;"; } } $sql="SELECT `SHOP`,`ITEM` FROM `LINK`"; $res = mysql_query($sql,$link); while ($rows = mysql_fetch_assoc($res)) { $LINK[$rows["SHOP"]][$rows["ITEM"]]="○"; } print<<<eof <table border> <thead> <tr> <th>&nbsp;</th> eof; foreach($ITEM as $key2=>$val2){ print "<th>$val2</th>"; } print<<<eof </tr> </thead> <tbody> eof; foreach($SHOP as $key1=>$val1){ print "<tr>"; print "<td>$val1</td>"; foreach($ITEM as $key2=>$val2){ print "<td>{$LINK[$key1][$key2]}</td>"; } print "</tr>"; } print<<<eof </tbody> </table> eof; しかし、下記のテーブルに項目が1つ追加され、それも表示できるようにして欲しいと依頼されました。 Table:SHOP ID  SHOPNAME STATION ------------------------ 1   東京 | 表参道 2   大阪 | 梅田 3   福岡 | 天神 (略) 結果としては下記のように表示したいです。 NAME |STATION|化粧品|家具 |園芸 |食品 |家電 | ------------------------------------------------ 東京 | 表参道|   |   |   | ○ |   | 大阪 | 梅田 |   |   |   |   | ○ | 福岡 | 天神 | ○ | ○ |   |   |   | (略) 配列をよく理解できていないため、スクリプトをそのまま真似して $STATION[$rows["ID"]]=$rows["STATION"]; を作ったり $SHOP[$rows["ID"]][$rows["STATION"]]=$rows["SHOPNAME"]; を作ったりして無理矢理展開してみようとしましたが やはり表がぐちゃぐちゃになってしまいます。 どうすればうまく表示できるか、アドバイス頂けませんでしょうか。

    • ベストアンサー
    • PHP
  • phpでmysqlで作成したdbを表示したい。

    現在phpのプログラムの学習を行っています。、 phpmyadminで作成したデータベースを読み込もうとしているのですが、うまくいきません。 参考書やサイトも参考にしたのですが、警告が出ています。 よくわからなくなってきましたので、教えていただきたいです。 ------------------------------------------------------------------------------- ・実行結果 Resource id #31Resource id #40 接続ID: 選択の成否: 結果ID: 行数: Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\job\job.php on line 45 ------------------------------------------------------------------------------- ・ソース <?php /*$con = mysql_connect('localhost','root','root') or die("接続できません"); print "接続に成功しました。"; mysql_close($con);*/ $url = "localhost"; $user = "root"; $pass = "***"; $db = "***"; // MySQLへ接続する $link = mysql_connect($url,$user,$pass) or die("MySQLへの接続に失敗しました。"); // データベースを選択する $sdb = mysql_select_db($db,$link) or die("データベースの選択に失敗しました。"); // クエリを送信する $sql = "SELECT * FROM t01prefecture"; $result = mysql_query($sql, $link) or die("クエリの送信に失敗しました。<br />SQL:".$sql); //結果セットの行数を取得する $rows = mysql_num_rows($result); //結果保持用メモリを開放する mysql_free_result($result); echo "$link"; echo "$sdb"; echo "$result"; echo "$rows"; echo "<br>"; echo "接続ID:<?= $link ?><br />"; echo "選択の成否:<?= $sdb ?><br />"; echo "結果ID:<?= $result ?><br />"; echo "行数:<?= $rows ?><br />"; $recordSet = mysql_query('SELECT * FROM my_items'); while($data = mysql_fetch_assoc($recordSet)){ /*このあたりが45行目 */ echo $data['item_name']; /* ここの値を変える*/ echo '<br>'; } // MySQLへの接続を閉じる mysql_close($link) or die("MySQL切断に失敗しました。");

    • ベストアンサー
    • PHP
  • 検索結果件数を取りたいです。

    環境は、php + mysqlで作ってます。 DBのテーブルに格納されている文字列をセレクト文で取り出して 対象件数が何個あるか知りたいです。 DBのテーブルに格納されている文字列はURLの文字列が入ってます。 例えば http://www.yahoo.com/ 確認のため、予め $obj = "http://www.yahoo.com/"; として、DBに入っているデータを書いておいて以下を実行しました。 $sql="select * from geturl where url=".$obj; $datas = mysql_query($sql , $db ); $num = mysql_num_rows($datas); echo $num; 結果: Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/~~ といったエラーが出てしまいました。。。 今度は、予め数字を入れておいて実行してみました。 入れた文字は「123」です。 $obj = "123"; $sql="select * from geturl where url=".$obj; $datas = mysql_query($sql , $db ); $num = mysql_num_rows($datas); echo $num; 結果:正しく対象件数がブラウザに表示されてました。 数字だと正しく処理されて、英文字だとエラーになる原因がわかりません。。 アドバイスいただければ幸いです。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHP+MySQL SQL文を外部ファイル化したい。

    表題のとおりなのですが… $result = mysql_query( "SELECT * FROM FOO" ); では、動作しています。 このセレクト文を、selectFOO.sql として外部ファイル化し、 (ファイルの中身は、「SELECT * FROM FOO」) $result = mysql_query( selectFOO.sql ); とすると、 1064 : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'selectFOO.sql' at line 1 が返ってきます。 SQL文が正しくないよ。マニュアル見てね。 と言われてるのは分かるのですが、 マニュアルのどこを見れば良いのかさえ分かりません。 助けてください。 よろしくお願いします。

    • 締切済み
    • PHP
  • WHILEで取り出しループ中にさらにSQL文を入れたいです。

    こんばんは。 いつもお世話になっております。 またはまってしまったみたいで、どうにもわからなく なってしまいました。 どうかご指導よろしくお願いいたします。 使用環境はPHP5+Apche+MySQL4.0です。 2つのテーブルから【一覧リスト】というページを作って mysq_fetch_array関数で、行をループで呼び出しました。 ここまでは出来たのですが、取り出したキー情報を もとに、別テーブルの情報(文字列)を取り出したい のです。 以下、試してみたコードです。 //SQL発行 $rs = mysql_query("select * from uriage", $conn); //1件ずつ取り出すループ while( $rec = mysql_fetch_array( $rs, MYSQL_ASSOC)){ echo "<tr>"; echo "<td>".$rec['oder_no']."</td>"; $sql = "(select*from syouhin where syouhin_id = '".$rec["syouhin_id"]."')"; $res = mysql_query($sql); $rows = mysql_fetch_array($res); echo $rows["syouhin_name"]; echo "<td>".$rec['siiresaki']."</td>"; echo "<td>".$rec['tanka']."</td>"; echo "</tr>"; } Parse error: syntax error, unexpected T_ECHO というエラーが返ってきています。 エラーの行数はecho $rows["syouhin_name"]; の部分です。 何が悪いのかすら判らなくて…。 どうか、ご指導よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • php5+Mysql5による条件検索とその表示方法が上手く動作しないのでどなたかご指摘をお願いします。

    phpにて条件検索を行っているのですが、『where』以下を$変数にすると動かなくなってしまいます。記述部分で何が間違っているのでしょうか? 以下記述↓ <? $link = db_con(); //←DB接続 $sql = "select * from tbl where id = '" . mysql_real_escape_string( $_GET['id'] ) . "' and name like '%" . mysql_real_escape_string( $_GET['name'] ) . "%' "; $result = mysql_query( $sql ) ; $num_rows = mysql_num_rows( $result ); ?> ここまで↑ を下記のように『where』以下を$変数にして代入 $変数した場合↓ <? $where .= "id = '" . mysql_real_escape_string( $_GET['id'] ) . "' and name like '%" . mysql_real_escape_string( $_GET['name'] ) . "%' "; $link = db_con(); //←DB接続 $sql = "select * from tbl where $where "; $result = mysql_query( $sql ) ; $num_rows = mysql_num_rows( $result ); ?> ここまで↑ どなたかご指摘をお願いします。