2011-07-26 29 views
1
$brand_condition = ' AND ' . mysql_real_escape_string($brand_selection) . ' IN '; 

$brand_condition .= $quote10 . '"'. mysql_real_escape_string($brand_value) . '"' .$quote9; 

$brand_conditions[] = $brand_condition; 

$query .= implode(' AND ', $brand_conditions) . ''; 

這將產生:和製造商在(「brand1,brand2」)PHP破滅引用字符串

由於我使用的報表,我需要被引用的值。與此同時,我正在用mysql_real_escape_string轉義潛在的引用。

有沒有人看到一個簡單的方法來解決這個小問題?

回答

3
function quote_escape(&$str) { 
    $str = '"' . mysql_real_escape_string(chop($str)) . '"'; 
} 

$brands = explode(',', $brand_value); 
array_walk($brands, "quote_escape"); 
$brands = implode(',', $brands); 

function quote_escape($str) { 
    return '"' . mysql_real_escape_string(chop($str)) . '"'; 
} 
$brands = implode(',', array_map("quote_escape", explode(',', $brand_value))); 
+0

將其從array_walk更改爲array_map,刪除重複的任務,你有我的upvote。 –

+0

我不確定這是OP的可讀解決方案,但正如您所願:P –

+0

AND語句應該放在哪裏? –

1
$concurrent_names = array("O'reilly", 'Tupac "MC New York" Shakur', 'Nemoden'); 
$escaped_concurrent_names = array_map('mysql_real_escape_string', $concurrent_names); 
$condition = 'WHERE name in ("'.implode('", "', $escaped_concurrent_names).'")'; 
2

如何$brand_conditions[] = '"'.$brand_condition.'"';所以你加上引號您在陣列中添加brand_condition權利之前。

0

使用此加引號內爆字符串。

$ values = implode(「','」,array_values($ values));

-1
$brands=array(nokia,samsung,xiomi); 

$brands=implode(" ',' ",$brand); 

//$brands='nokia','samsung','xiomi'; 

WHERE column_name IN ($brands)