質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

mysqli

MySQLiはPHP5より導入されているデータベース用のドライバです。MySQL 4.1.3以降の新しい機能の利点をまとめています。

Q&A

解決済

1回答

632閲覧

SELECT*で値を取り出したい(mysqli、bindあり)

inari1973

総合スコア35

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

mysqli

MySQLiはPHP5より導入されているデータベース用のドライバです。MySQL 4.1.3以降の新しい機能の利点をまとめています。

0グッド

0クリップ

投稿2020/07/16 09:15

SELECT*で値を取り出したいのですが、以下では動きません。どうすればよいででしょうか?※*をidなどにすれば動きます。

以下のコードは動かない $checktenki=mysqli_prepare($db,"SELECT * FROM data WHERE tenki= ?"); mysqli_stmt_bind_param($checktenki, 's', $tenki); mysqli_stmt_execute($checktenki); mysqli_stmt_bind_result($checktenki, $row); while (mysqli_stmt_fetch($checktenki)) { print ($row); } mysqli_stmt_close($checktenki);
以下のコードも動かない $checktenki=mysqli_prepare($db,"SELECT * FROM data WHERE tenki= ?"); mysqli_stmt_bind_param($checktenki, 's', $tenki); mysqli_stmt_execute($checktenki); mysqli_stmt_bind_result($checktenki, $row['id'], $row['basyo']); while (mysqli_stmt_fetch($checktenki)) { print ($row['id']); }
以下のコードは動く mysqli_stmt_close($checktenki); $checktenki=mysqli_prepare($db,"SELECT id FROM data WHERE tenki= ?"); mysqli_stmt_bind_param($checktenki, 's', $tenki); mysqli_stmt_execute($checktenki); mysqli_stmt_bind_result($checktenki, $row); while (mysqli_stmt_fetch($checktenki)) { print ($row); } mysqli_stmt_close($checktenki);

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2020/07/16 09:30

PHPマニュアル確認しないんですね。せっかく前の質問でリンクつきで回答したのに。 適当に書いても動かないのは当然ですよ。 書いた通りに動いているだけです。
guest

回答1

0

自己解決

select *を使用しているので、すべての項目をbind_resultで出さないといけないようです。

参考URL

投稿2020/07/16 09:39

inari1973

総合スコア35

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2020/07/16 10:00

ですから、なぜPHPマニュアルを参照しないのでしょう。 何より確実な情報が載っているというのに。 そもそも論だと、mysqliを使うこと自体が、ほぼないことですし そこで頑張ったとて、あまり使える技術にはなりません。
m.ts10806

2020/07/16 10:02 編集

7年も前の質問を解決の根拠とするのも非常に危険です。 参考にしてはいけない回答なので低評価しています。 公式以外の1年以上前の情報は疑ってかかってください。
inari1973

2020/07/16 10:45

PHPマニュアルを見ても分からないから質問しています。どこかには書いてあるのでしょうが・・。 ちなみに、データベース関連は、1割がPDO、9割がMysqliで作ってあるのですが、やっぱりPDOを使っていったほうが良いのでしょうか? どちらを使うべきか、調べても決定的な答えはみつからないんですよね。PDOでも2~3年前に少しプログラムを書いたことはありますが、書き方が違うぐらいかなという認識です。
m.ts10806

2020/07/16 11:27 編集

>PHPマニュアルを見ても分からないから質問しています 少なくとも、直近の質問から本質問に至るまでPHPマニュアルを確認したことすら他者が分かる情報がありません。 どこを見たか分からなければ「本当に分かるページを参照しているか」を判断することはできません。 「調べたけど分からなかった」という文言が伝える情報はゼロです。 初心者がまず初めに覚えるべきは「デバッグ」と「PHPマニュアルの活用」です。 >どちらを使うべきか、調べても決定的な答えはみつからないんですよね。 mysqliではダメな理由の方が簡単に見つかります。 ・MySQL(またはMariaDB)でしか使えない。DBはMySQLだけではありません ・記事が古い。削除されたmysql_系と勘違いしたり、そのまま移行できると思って使おうとして失敗する人が多い 特に記事が古いのは致命的です。 「mysqli vs pdo」とでも検索すれば比較記事は多く出てくるでしょう。 ここで私が説明するよりも良いコメントは沢山ありますし、「決定的な答え」を求めているのならひたすら読み漁ってください。 PDOは利用例も多く、下記のように多く参照される優秀な記事も多いです。 https://qiita.com/mpyw/items/b00b72c5c95aac573b71 ※1年以上前ですが、今も使えます。PHP8になったらまた新しい記事も立てられるでしょう 上記、そこまで探すのに時間がかからないかと思いますが、何をどう探して「見つからなかった」のでしょうか。 いずれにしても7年前の記事を根拠とするのは全力で避けるべきでしょう。 探し方がまずいままだと丸投げ質問を繰り返すことになり、自力はつきませんし、やがて、成長意欲なしと捉えられて相手をする人がいなくなります。
m.ts10806

2020/07/16 11:30

「そもそも」で言えば、現場ではレガシーシステムを除いてフレームワークを利用するので、プログラマーが「mysqliかPDOか」を気にすることはないですね。ただ、ざっと調べた感じ、PHPの今の主流のフレームワークであるLaravelでは内部的にPDOが利用されているようですが。
inari1973

2020/07/16 11:43

stmt_bind_result stmt_bind_param などをググりますと、しばしばPHPマニュアルの記事がヒットします。そのときに、都度、目を通す感じです。 「GOOGLEとBINGで色々検索をしたけど分からない→海外記事を読み出しても分からない→ここで質問」という流れが多いです。PHPマニュアルを特に意識して調べているわけではありません。本も1~2年は買っていないです。 もっと良い調べ方がありましたらご指導いただけますと幸いです。ちなみに、私は主な業務はエンジニアではありません。
inari1973

2020/07/16 11:45

以前からMYSQLiの記事が少ない気がすることなどから、PDOに変えたほうが良いかもなあという気配は感じていました。2年ぐらい前にPDOを使って小さなものも作りました。ただ、変更すべき決定打がなくずるずるとMysqliを主にしてここまで来ています。
m.ts10806

2020/07/16 20:44

では、PHPマニュアルを主軸にしてください。 何かの個人が書いた記事を確認するときも機能の使い方をPHPマニュアルで整合性とってください。 おそらく、それだけで解決することが増えます。 「活用」なので、単に目を通すというより、「今からやろうとしていることにどう使えそうか考える」「載っているサンプルコードを動かしてみる。当てはめてみる」ところまでやるのが理想です。 質問作ってる間にできることかと思います。質問作るのもそれなりに骨がおれる作業かと思いますが、その労力を使って自身で解決できるなら、そのほうが早いはずです。 それでもできなくて質問する場合、調べたことは必ずきちんと書くことです。 回答でPHPマニュアルのURLが提示されることは非常に多いです。それだけ確実な情報源だからですね。 そこで「それはもう見た」と後だしされたら折角のアドバイスが無駄になりますし、「どこを読んでなにを試してどう分からなかったか」が分からないと、アドバイスしようがないですからね。 PDOについては、先に書いた通り情報の多さと汎用的なところ、記述が若干ですが短く済むところが売りです。 「単に慣れてるから」でmysqliを使い続けるのはリスクがあると私は思います。 自身でフレームワーク作っていましたが、ある時期を境に全てPDOに書き換えました。
m.ts10806

2020/07/16 20:47

teratailの回答見ていると、「余程の理由がない限りPDOを利用すべき」という意見は私以外でも多いです。 ひとまずお願いしたいのは「参考URL」の変更です。探せば同じような内容の記事はあるかもしれませんが、7年前のものと最近のものでは情報の鮮度が違いますし信頼度も変わります。 できればPHPマニュアルにしてもらいたいところではあります。
inari1973

2020/07/17 01:02

今後、見つかったら変更させていただきたいと思います。
inari1973

2020/07/17 01:04

今後はPHPマニュアルをより意識して調べたり、質問したりしようと思います。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問