2017-04-15 8 views
-1

私は文字列の配列を持っており、テーブルから結果を取得するために使用したいと思います。私はコードを次のように試してみましたが、うまくいきませんでした。mysqlステートメントで動的bind_paramsを実行する方法は?

$subCategoryIds = array("2","3","4"); 
$placeholders = implode(', ', array_fill(0, count($subCategoryIds), '?')); 
$stmt = $this->conn->prepare("SELECT * FROM topics WHERE subcategory_id IN = ($placeholders)"); 
$stmt->bind_param("s", $aplaceholders); 
$stmt->execute(); 

私は間違っていますか?誰もがこれに対してより良い解決策を持っていますか?

+1

_ $ placeholders_の代わりに_ $ aplaceholders_はここのミスタイプですか、それとも? – Danny

+1

あなたの選択したクエリが間違っています.1列に 'IN'と' = 'を使用することはできません。あなたのスクリプトの '$ aplaceholders'も。あなたはこの投稿をチェックする必要があります:http://stackoverflow.com/questions/17226762/mysqli-bind-param-for-array-of-strings –

+0

それは正しい=来るべきではないが、それでも動作しません。クエリが解決策の後にパラメータをバインドする必要はありません。 –

答えて

-2

私はこれに対する解決策を得ました。非常に簡単です。クエリ後にparamsをバインドする必要はありません。

$stmt = $this->conn->prepare("SELECT * FROM topics WHERE subcategory_id IN (".implode(',',$subCategoryIds).")"); 
$stmt->execute(); 
$result = $stmt->get_result(); 
$stmt->close(); 

ご回答ありがとうございます。

+1

このソリューションはバインドパラメータを使用しません –

関連する問題