簡體   English   中英

在PHP中以逗號分隔值列表運行select

[英]Running a select on a list of comma separated values in PHP

我在數據庫上運行select查詢時遇到了一些問題。 一些數據保存為逗號分隔值列表,例如:

Table: example_tbl
| Id | People | Children |
| 1  | 1,2,3  |  8,10,3  |
| 2  | 7,6,12 |  18,19,2 |

我試圖運行的一個例子:

<?php
    include 'class.php';
    $selection = 1;
    $db = new DbClass;
    $tbl_name = 'example_tbl';
    $sql = "SELECT * FROM $tbl_name WHERE ".$selection." IN People";
    $result = $db->query($sql);
    $print_r($result);
?>

上面的腳本應該在People列中找到'1'之后返回第1行,但很明顯我已將其刪除了。

我遇到的問題是我認為我的IN語句是向后的,即我認為如果$ selection是逗號分隔(內爆)列表,那么這個方法將是選擇值,而不是我嘗試使用它的方式。

我不知道我從上面的db類發送和接收的內容是否過於重要,但如果您想知道,它只是一個運行所有相關位並返回結果數組的簡單腳本。 目前它沒有返回任何東西,因為它找不到匹配

提前感謝你能告訴我的任何事情。

干杯 - 戴夫

為什么人們堅持這種瘋狂的習慣,即在列中使用逗號分隔的數據值,而不是正確地規范化他們的數據庫設計。 總會導致問題。

SELECT * 
  FROM $tbl_name 
 WHERE CONCAT(',',People,',') LIKE '%,".$selection.",%'";

要么

SELECT * 
  FROM $tbl_name 
 WHERE FIND_IN_SET(".$selection.",People);

暫無
暫無

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

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