2013-05-17 19 views
2
$sql = "SELECT message FROM sale WHERE seller_id=? && payment_date=? && bank=?"; 

$q = $conn->prepare($sql); 
$result = $q->execute(array($user_id, $paydate, bank1|| bank2|| bank3)); 

如何糾正「bank1 || bank2 || bank3」的錯誤?如何把OR或pdo select查詢條件?

+0

你不應該在這個問題上添加'php'標籤嗎? – luchosrock

回答

2
$sql = "SELECT message FROM sale WHERE seller_id=? AND payment_date=? 
    AND bank IN (?, ?, ?)"; 

$q = $conn->prepare($sql); 
$result = $q->execute(array($user_id, $paydate, $bank1, $bank2 $bank3)); 

如果你有銀行的動態數量(例如,在數組$銀行):

$sql = "SELECT message FROM sale WHERE seller_id=? AND payment_date=? "; 

$values = array($user_id, $paydate); 

if ($banks) { 
    $sql .= " AND bank IN (" . implode(",",array_fill(0,count($banks),"?")) . ")"; 
    $values = array_merge($values, array_values($banks)); 
} 

$q = $conn->prepare($sql); 
$result = $q->execute($values); 

PS:我建議在SQL代替&&||使用ANDOR。在標準SQL中,||是字符串連接運算符。儘可能地養成編寫標準SQL的習慣是明智的。

+0

非常感謝。 – zac1987

0

將數組放在數組中,然後將數組放入執行語句中。但由於您要查詢的銀行的動態數量,您還必須將&& bank=更改爲&& bank in()