みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

PHPでデータベースを扱いたいのですが

$pdo = new PDO("mysql:dbname=aaa", "root");
$pdo->query("set names utf8;"); //
$st = $pdo->query("SELECT * FROM bbb WHERE ROWNUM <= 50");
while ($row = $st->fetch()) {
$name = ($row['名前']);
echo "$name";
}
?>

現在PHPを勉強中でデータベースが必要になったため初心者サイトを見ながら少しさわっていたのですがいきなり分からない部分が出てきました。
上記でWHEREの後の条件式をLIKEなど他の条件なら上手く動くみたいなのですが、検索結果
の上位50件を取得したいためROWNUMを使うと
Fatal error: Call to a member function fetch() on a non-object in
とエラーが出ます。
このエラーはどういう意味なのでしょうか? 初心者サイトを見る限り特に間違っている所が
無いように思うのですが・・。

自分のやりたい事は、データベースから任意の条件で検索して、並び替えて、50件ずつ表示
させたいと考えています。ROWNUMが使えないと非常に困る事になるのですが、
どのサイトを見ても解決できません。詳しい方いましたらよろしくお願いします。

投稿日時 - 2013-11-19 17:33:13

QNo.8353779

すぐに回答ほしいです

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

ROWNUMはオラクルでしょうか?
MySQLでは使えませんね。

もし上位50件が必要なのでしたら、

SELECT * FROM bbb WHERE 条件 ORDER BY 並び替えしたいフィールド LIMIT 50

とLIMIT句を使えば50件だけ取得してくれます。
ただし、事前にORDER BY で並べ替えを行った順に上位50件になります。

投稿日時 - 2013-11-19 17:48:32

お礼

ご回答ありがとうございます。
これMySQLでは使えないのですか・・。
オラクルオラクルと出てくるので何の事かよくわらず無視していました。

投稿日時 - 2013-11-20 10:46:39

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

コピペで申し訳ないですがこちらと回答内容がかなり重複するのでご了承ください。
http://okwave.jp/qa/q8352943.html

とりあえずPDOを扱う上で PDO::ATTR_ERRMODE の設定はほぼ必須と言ってもよいでしょう。デバッグのときもこれがあるのとないので作業効率が全く違います。

投稿日時 - 2013-11-19 19:31:20

ANo.1

Mysqlならばjavascript:void(0);
ROWNUMではなく,limitで取得する件数を制御するのが一般的です。
http://www.dbonline.jp/mysql/select/index12.html

このエラーは検索結果が0件のために表示されているのだと思います。

投稿日時 - 2013-11-19 17:48:03

お礼

ご回答ありがとうございます。おっしゃるやり方で解決しました

投稿日時 - 2013-12-09 09:41:59

あなたにオススメの質問