【发布时间】:2011-01-30 01:39:00
【问题描述】:
我有一个包含成员姓名的表和一个包含多个 ID 号的字段。我想创建一个返回结果的查询,其中 ID 字段中的任何值与数组中的任何值重叠。
例如:姓:史密斯 名字:约翰 id: 101, 103
我有数组 #1,其值为 101、102、103
我希望查询输出在其 id 字段中列出值 101 或 102 或 103 并列出多个 id 的所有成员。
Array ( [0] => 101
[1] => 102
[2] => 103 )
$sql="SELECT firstname, lastname, id
FROM members WHERE id LIKE '%".$array_num_1."%'";
$result=mysql_query($sql);
while ($rows=mysql_fetch_array($result)) {
echo $rows['lastname'].', '.$rows['firstname'].'-'.$rows['id'];
}
我试图简化它。 ID实际上存储在另一个表中,我已经从这个表中生成了数组。
$array_num_1 = array();
$sql_id="SELECT id FROM id_table WHERE id < 200";
$result_id=mysql_query($sql_id);
while($rows_id=mysql_fetch_array($result_id)){;
$array_num_1[] = $rows_id['id'];
}
【问题讨论】:
-
存储一个值列表然后尝试针对它编写查询是一种可怕的关系建模方式。我的建议是使用您的数据库作为数据库。为关系创建一个子表,然后查询就很简单了。
-
ID 实际上存储在单独的表中。请参阅上面的编辑。
-
所以,你必须去掉 members 表中的这些 id
-
请发布两个表的确切结构。
-
Members Table: lastname, firstname, id ID table: id, id_name 例如,用户选择了他们想要显示所有成员以及与其名称关联的 ID 小于 200 的 id 名称。
标签: php mysql arrays while-loop