2017-04-02 8 views
0

PHPでかなり新しいです。古いPHPアプリケーションでパラメータを使用して簡単なクエリを定義しようとすると、次の問題が発生します。私は(他の誰かによって作られた、このアプリケーションでは、他の作業のクエリを模倣する)、このように行っている:この古いPHPアプリケーションでパラメータを使用してクエリを定義しようとすると、このエラーが発生するのはなぜですか? (致命的なエラー:パラメータ2を参照で渡すことはできません...)

$result_facility_list = $db->prepare("select name from pm_facility where lang = :id_lang"); 
$result_hotel_file->bindParam(":id_lang", 2); 

その後

を問題は、それが結合二行目を実行しようとするということですに整数値2:パラメータをid_lang私は、このエラーメッセージを得る:

(!) Fatal error: Cannot pass parameter 2 by reference in C:\xampp\htdocs\BeTrivius-Panda\templates\default\models\booking.php on line 534 
Call Stack 
# Time Memory Function Location 
1 0.0326 165272 {main}() ..\index.php:0 
2 8.2043 835656 include('C:\xampp\htdocs\BeTrivius-Panda\templates\default\models\booking.php') ..\index.php:146 

問題がある可能性がありますか?私は何が欠けていますか?この問題を解決するにはどうすればよいですか?

$id=2; 
$result_hotel_file->bindParam(":id_lang", $id); 

+0

$ result_hotel_file-> bindParam( ":id_lang"、2);この行を$ id = 2; $ result_hotel_file-> bindParam( ":id_lang"、$ id)に変更します。 –

+0

パラメータは、直接値ではなく変数として渡す必要があります。 –

+0

RTM http://php.net/manual/en/pdostatement.bindparam.phpあなたはMySQL/PDOの初心者です。 –

答えて

2

変更この行を

$result_hotel_file->bindParam(":id_lang", 2); 

あなたはそれをせずに:id_langにint型2をバインドしたい場合は、変数

+0

あなたは$ id – Augwa

+0

を渡していませんでした。@vSugumar ok、それはうまくいくようです。もう一つの疑念。定義されたクエリは、行のリスト(単一の "name"列を含む)を取得します。 "$ result_hotel_file-> execute();を実行した後、どのようにこれらの値の配列を取得できますか?文? – AndreaNobili

1

としてbindparamする値を渡す必要があるため使用できる変数bindValue()

$result_hotel_file->bindValue(":id_lang", 2, PDO::PARAM_INT); 

あなたは(名前が多少わかるように)bindParam()を使用したい場合は、変数を使用する必要があります:

$yourIdVar = 2; 
$result_hotel_file->bindParam(":id_lang", $yourIdVar, PDO::PARAM_INT); 
関連する問題