【发布时间】:2013-05-13 16:28:35
【问题描述】:
我在数据库中有一个列,其值存储为逗号分隔的数组;假设数据库中的示例条目是:1、5、8、15
我现在正在尝试在 SELECT 语句中使用此数据,以允许用户在数据库中选择一个条目,其中该数组包含他们选择的值(这些值与我实际加入的查找表相关联)应用程序,用户看不到整数)。
我简化的 SELECT 语句本质上是:
$arrayvalue = "1";
$query = "SELECT * FROM table WHERE tablearray IN ($arrayvalue)";
在本例中,我输入 1 作为要搜索的数组值;实际上,该变量是由用户控制的表单输入中的 POST 填充的。
'tablearray' 是包含逗号分隔数组的列的名称,我们说它会包含 1、5、8、15 作为示例(尽管它在现实中有所不同)。
当我为数组中的第一个值选择但不返回时,此带有 IN 子句的语句现在对我来说适用于表列中只有一个值或数组中有多个值的数据如果我选择第二个值,即如果我将 $arrayvalue 设置为 1 它可以工作,但到 5 它不会在我的结果中返回该行。
此时我不需要从数组中选择多个值,我只希望它能够从表列中选择一个值,而不管该整数在数组中的哪个位置。我怀疑我在这里遗漏了一些简单的东西,如果你能提供帮助,谢谢。
【问题讨论】:
-
为什么要以这种非规范化的方式存储数据?正常形式是将这些值中的每一个作为单独的表中的单独行。