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

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

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

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

1回答

264閲覧

プリペアドステートメントについて

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2018/04/10 16:06

編集2018/04/10 16:08

PHP/7.2.3
該当のソースコードのクエリメソッドを実行するとクエリは実行できるのですが、以下のようなエラーメッセージが出てしまいます。
自分でいろいろ調べたり試したりしてみましたがエラーの理由がわかりませんでした。
ご教授のほどよろしくお願いいたします。

Warning: Parameter 2 to mysqli_stmt::bind_param() expected to be a reference, value given in ~ on line 123 Warning: Parameter 3 to mysqli_stmt::bind_param() expected to be a reference, value given in ~ on line 123

DBクラス

PHP

1 2 function query($sql){ 3 $this->sql=$sql; 4 if($this->types<>""){ 5 if($stmt = $this->mysqli->prepare($sql)){ 6 call_user_func_array( 7 array( 8 $stmt, 9 'bind_param' 10 ), 11123 $this->bindget() 12 ); 13 $stmt->execute(); 14 }else{ 15 $stmt=false; 16 } 17 }else{ 18 $stmt = $this->mysqli->query($sql); 19 } 20 21 return $stmt; 22 } 23 24 function bindget(){ 25        if(PHP_VERSION_ID > "50000" && PHP_VERSION_ID <= "50300"){ 26 return array_merge(array($this->types), $this->bind_val); 27 }else{ 28 return array_merge(array($this->types), $this->refValues($this->bind_val)); 29 } 30 break; 31 } 32 33 function refValues($arr){ 34 35 $refs = array(); 36 37 foreach ($arr as $key => $value){ 38 $refs[$key] = &$arr[$key]; 39 } 40 return $refs; 41 }

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

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

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

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

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

m.ts10806

2018/04/10 21:44

エラーの意味自体は調べたのでしょうか?調べた内容を具体的に明記されたほうが丸投げ感が減って回答もつきやすくなりますよ。(できれば質問テンプレートを利用していただきたいです)
退会済みユーザー

退会済みユーザー

2018/04/10 23:00

だから前に「どうして英語読まないんですか?」という、核心をついた質問したのに、運営が都合悪いからって削除したせいで有耶無耶にされたんですよねぇ。
退会済みユーザー

退会済みユーザー

2018/04/10 23:00

運営は反省すべきです。
退会済みユーザー

退会済みユーザー

2018/04/10 23:30

んーでまぁ、どういうことかというと
退会済みユーザー

退会済みユーザー

2018/04/10 23:31

bind_param() は reference(参照)を expected(期待)している, でも、value(値)が given(渡された)ので、PHPさんが怒っているのです。
退会済みユーザー

退会済みユーザー

2018/04/10 23:37

で、bind_param()
退会済みユーザー

退会済みユーザー

2018/04/10 23:37

bool mysqli_stmt::bind_param ( string $types , mixed &$var1 [, mixed &$... ] )
退会済みユーザー

退会済みユーザー

2018/04/10 23:43 編集

このように、第二引数と第三引数以降は参照でなければならないわけです。
m.ts10806

2018/04/10 23:57

lucker さん それもう回答ではないでしょうか・
退会済みユーザー

退会済みユーザー

2018/04/11 00:07 編集

いや、多分、そっから先が本題になるので、それを質問者さんと回答者さんでがんばってもらおうと外野は思っております…
退会済みユーザー

退会済みユーザー

2018/04/11 00:10

>>mts10806さん はい、過去の質問等も調べたりしてかなりの時間を費やしましたがそれでも解決しなかったので質問しました。アドバイスありがとうございます。
m.ts10806

2018/04/11 00:24

では調べた内容追記してくださいね。luckerさんのコメントも解決のヒントになると思います。
m.ts10806

2018/04/11 00:26

あとは、もう少しソースコード全体を提示されたほうが良いように思います$thisを利用されているので何らかのクラスかとは思いますが、ここだけでは全体像が見えづらいです。
退会済みユーザー

退会済みユーザー

2018/04/11 00:35

>>luckerさん アドバイスありがとうございます。おかげさまでどこがいけないかが何となく理解することができました。もう少し自分で試行錯誤してみます。ありがとうございます。
退会済みユーザー

退会済みユーザー

2018/04/11 00:39

>>mts10806さん 承知致しました。たしかに一部のソースコードだけコピペして説明もなく丸投げな質問でした。次回から気を付けます。
m.ts10806

2018/04/12 00:29

あれ?退会してしまいましたか
guest

回答1

0

bind_param が期待する引数を渡してないからですねー

投稿2019/03/18 01:37

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問