簡體   English   中英

SQL語句中值可能為空(空)

[英]SQL statements where value could be nothing (empty)

我有一些搜索功能,該功能允許用戶從下拉列表中選擇一個姓名或在搜索字段中輸入人名或其中的一部分(通配符功能)。

我遇到的問題是,如果使用下拉選項,則搜索字段將不會,反之亦然。

我嘗試了一些SQL,如下所示(請注意,變量代表通過表單發送的數據):

SELECT id, name, age FROM player
    WHERE player.id = '$id'
        OR player.name LIKE '%$text%'

使用上述方法時,通配符功能可以正常工作。

但是,如果您從下拉列表中選擇一個玩家,則它將返回所有玩家。 這是因為$text的值為空(空),LIKE'%%'表示選擇所有內容,因此它選擇所有名稱。

然后,我嘗試了以下操作:

SELECT id, name, age FROM player
    WHERE player.id = '$id'
        AND player.name LIKE '%$text%'

現在,下拉功能可以按預期運行,但是通配符搜索不起作用。 這是因為我假設AND要求兩個語句都為true,並且僅指定通配符條目時$id為空(空),所以條件永遠不會為true。

任何人都可以通過一些sql幫助我,以確保下拉列表和通配符搜索彼此獨立地工作嗎?

感謝您的寶貴時間和提前的幫助。

$params = ''

if($id !== ''){
  $params = "player.id = '$id'";
} else if($text !== ''){
  $params = "player.name LIKE '%$text%'";
}

$sql = "SELECT id,name,age FROM player WHERE {$params}";

mysql_query($sql);  //if using mysql_ 

有條件地要求提供id

$idCondition = "";
if ($id) {
    $idCondition = "player.id = '$id' AND ";
}

$query = "SELECT id, name, age FROM player WHERE {$idCondition}player.name LIKE '%$text%'";
"SELECT id, name, age FROM player
WHERE (player.id = '$id' AND '$id' <> '')
    OR (player.name LIKE '%$text%' AND '$text' <>'')"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM