2012-04-05 6 views
1

변수의 출력값 I PHP의 다음의 MySQL 쿼리 가지고 PHP MySQL의 질의 - 질의

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

그러나 I 쿼리는 쿼리의 LIKE 부분을 변경하여 동적으로하고자한다. 대신에 :

LIKE '%details%' 

내가 거기에 변수를 넣어 원하는 : $ 형식 문자열

LIKE '% $format %' 

입니다.

나는 지금까지 시도한 모든 것이 실패했습니다.

어떻게해야할까요? 중괄호

+0

이렇게하는 방법은 많지만 올바른 방법은 매개 변수가있는 쿼리를 사용하는 것입니다. 작은 바비 테이블을 기억하십시오 ... http://xkcd.com/327/ –

+0

주제에 대한 훌륭한 질문이 있습니다 : http://stackoverflow.com/questions/60174/best-way-to-stop-sql-injection-in -php –

답변

0

시도 포장 :

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%'"); 

, 당신은 아무것도 탈출 할 필요 없어요.