PHP使用SQL语句在数组中获取数据

时间:2017-12-13 08:45:03

标签: php mysql sql

我有一些以逗号分隔的记录,我将其保存在MySQL数据库中。

我有下表和记录:

tbl_checks

id  | items
----+------
1   | 2,5
2   | 2,3

所以我想获取数据,其中items列中的一个逗号分隔值为5。

我试过了:

$sql = "SELECT * FROM tbl_checks WHERE items="; //unable todo at here

这样我就可以:

$results = $this->db->query($sql)->result() //codeigniter script

我也试过

$sql = "SELECT * FROM tbl_checks WHERE items=".in_array(5)//this fails

3 个答案:

答案 0 :(得分:1)

如果您想查询此字段,那么您当前的方法并不好。通常,您将使用规范化并将该数据拆分为多个表,这些表可以更好地查询。

如果您坚持使用此方法,则可以使用LIKECONCAT

$id = '2';
$sql = "SELECT * FROM tbl_checks WHERE CONCAT(',', items, ',') LIKE '%,$id,%'";

答案 1 :(得分:0)

$ value = 5;

$ result = $ this-> db-> where(“FIND_IN_SET($ value,items)!=”,0)            - >获得( “tbl_checks”) - > result_array();

答案 2 :(得分:-1)

我同意这样的数据库不是很好的构建。这个查询的任何方式都应该有效:

SELECT * 
FROM tbl_checks 
WHERE ( items LIKE "5,%" ) 
OR (item LIKE "%,5");