2012-04-05 6 views
1

における変数の出力値Iは、PHPで以下のmysqlのクエリがあります:私は、クエリは、クエリのLIKEセクションを変更することで、動的にしたいしかしPHPのmysqlのクエリ - クエリ

$results = $wpdb->get_results("SELECT * FROM $wpdb->postmeta WHERE meta_key = '_wp_attachment_metadata' AND meta_value LIKE '%details%'"); 

を。代わりに:

LIKE '%details%' 

私はそこに変数を入れたい:

$形式が文字列である
LIKE '% $format %' 

これまでに試したことはすべて失敗しました。

これを行うには適切な方法はありますか?括弧内

+0

これを実行する方法はたくさんありますが、正しい方法はパラメータ化されたクエリを使用することです。小さなボビーテーブルを覚えています... http://xkcd.com/327/ –

+0

トピックに関する素晴らしい質問があります:http://stackoverflow.com/questions/60174/best-way-to-stop-sql-injection-in -php –

答えて

0

するTryラッピング:

LIKE '%{$format}%' 
0

あなたは二重引用符を使用しているので、あなたは、単に行うことができます:

$results = $wpdb->get_results("SELECT * FROM $wpdb->postmeta WHERE meta_key = '_wp_attachment_metadata' AND meta_value LIKE '%$format%'"); 

それとも単純に文字列を連結する:

$results = $wpdb->get_results("SELECT * FROM $wpdb->postmeta WHERE meta_key = '_wp_attachment_metadata' AND meta_value LIKE '%" . $format . "%'"); 
0

あなたの文字列がありますすでに二重引用符で囲まれているので、中括弧で変数を囲むだけでよいです。変数を渡す前に

"SELECT * FROM $wpdb->postmeta WHERE meta_key = '_wp_attachment_metadata' AND meta_value LIKE '%{$format}%'" 
0

あなたはすでに答えを得た。この

$format = '%' . $format . '%'; 
now simply put it in the query. 

$results = $wpdb->get_results("SELECT * FROM $wpdb->postmeta WHERE meta_key = '_wp_attachment_metadata' AND meta_value LIKE '$format'"); 
0

を行います。私はあなたが望むのとまったく同じようにすることができます。

$results = $wpdb->get_results("SELECT * FROM $wpdb->postmeta WHERE meta_key = '_wp_attachment_metadata' AND meta_value LIKE '%$details%'"); 

クエリは、二重引用符で囲まれているので、あなたは何をエスケープする必要がいけません。