2017-07-01 17 views
-1

我在OR不工作MySQL或不工作

try { 
    $keyword = trim($_GET["keyword"]); 
    if ($keyword <> "") { 
    $sql = "SELECT * FROM tbl_contacts WHERE 1 AND " 
      . " (first_name OR last_name LIKE :keyword) ORDER BY first_name "; 
    $stmt = $DB->prepare($sql); 

    $stmt->bindValue(":keyword", $keyword."%"); 

它只能從last_name而不是搜索從first_name代碼。

我需要它應該同時搜索姓氏名字

+0

'(FIRST_NAME LIKE:關鍵字1 OR姓氏LIKE:關鍵字2)'是不是很明顯? –

回答

1

試試這個

$sql = "SELECT * FROM tbl_contacts WHERE 1 AND " 
     . " (first_name LIKE :keyword OR last_name LIKE :keyword) ORDER BY first_name "; 
6

正確的代碼是:

$sql = "SELECT * FROM tbl_contacts WHERE 1 AND " 
     . " (first_name LIKE :keyword1 OR last_name LIKE :keyword2) ORDER BY first_name "; 
$stmt = $DB->prepare($sql); 
$stmt->bindValue(":keyword1", $keyword."%"); 
$stmt->bindValue(":keyword2", $keyword."%"); 

注意不能有超過一個佔位符相同的名稱。這就是爲什麼我使用keyword1keyword2並將相同的值綁定到它們。

+0

keyword1和keyword2值應該用單引號 – TSungur

+2

@TSungur,爲什麼? –

+0

因爲它將是一個字符串值,並且sql字符串被引號括起來? – TSungur

0

這次你付出了額外的努力並嘗試了更多,是的這比MYSQL search result更清晰。

try { 
    $keyword = trim($_GET["keyword"]); 
    if ($keyword <> "") { 
    $sql = "SELECT * FROM tbl_contacts WHERE 1 AND " 
     . " (first_name LIKE :keyword OR last_name LIKE :keyword) ORDER BY first_name "; 
    $stmt = $DB->prepare($sql); 

    $stmt->bindValue(":keyword", $keyword."%"); 

希望這會幫助你。

是的,嘗試編輯同一個問題,避免以不同的方式提出相同的問題。

我已經回答了這個問題太https://stackoverflow.com/a/44859438/7678788

+0

我被迫重複它,因爲https://stackoverflow.com/questions/44845731/mysql-search-result現在還沒有完全活動。 –

+0

@Chiru在我的回答中閱讀通知並編輯你的通知。你的代碼將不工作。 –