2016-10-25 14 views
2

PHPでSQLクエリを作成しようとしています。しかし、私はかなり珍しい方法で言及を得る。私は実際に私は宣言され、上記のスニペットでそれを使用して、プログラムのどの部分で配列として「$ SQL」変数を治療していないphp - 注意:配列から文字列への変換

$i=0; 
$SQL=""; 
$tableFieldsQueryFormat=array("hospitals"=>"(location LIKE '%@val%' OR phone_no LIKE '%@val%')","doctors"=>"doc_name LIKE '%@val%'","news"=>"title LIKE '%@val%'","diseases"=>"name LIKE '%@val%'","tips"=>"tip LIKE '%@val%'"); 
$tableName=array("hospitals","doctors","news","diseases","tips"); 
$query_str=str_replace("@val",trim("dummy"),$tableFieldsQueryFormat[$tableName[$i]]); 
$SQL="SELECT * FROM $tableName WHERE $query_str AND isdeleted='0';"; // Notice is thrown here !!! 

。この奇妙な予告の背景には何がありますか?私は構文や論理エラーを起こしたとは思わない。

+1

は '$ tableName'は、配列ではなく文字列で、SQLクエリは文字列のみ入力してください。 – Amol

+0

'@ Amol'はあなたに答えを教えてくれましたが、あなたが必要とする以上に複雑になっていると確信しています。配列は目的を果たすべきです。 – PHPglue

答えて

1

$ tableNameは配列なので、この例外が表示されます。あなたの文字列が補間されるとき、$ tableNameは文字列に変換できません。

代わりにこれを試してみてください:

$SQL = "SELECT * FROM " . explode(",",$tableName) . " WHERE $query_str AND isdeleted='0';"; 
+0

そう、それはばかげた間違いだった。今私はそれを投稿することに全面的に恥ずかしいと感じています。とにかく、ありがとう !! – hecate

+0

恥ずかしくないでください!誰もが間違いを犯し、ここに掲示するのが一番の部分は、同じ間違いで他人を助けるかもしれないということです。私はいくつかの人々が厳しいことができる知っているが、あなたがあなたの質問を明らかにするならば、すべての質問は有効です。 –

関連する問題