【问题标题】:PHP While Loops from Arrays来自数组的 PHP While 循环
【发布时间】: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


【解决方案1】:

规范化您的数据库。 将这些 id 放入单独的表中。

编辑:然后然后使用下面的答案

【讨论】:

  • ID 实际上存储在单独的表中。请参阅上面的编辑。
【解决方案2】:

如果你必须这样做:

$sql = "SELECT firstname, lastname, id FROM members WHER id IN (" . implode(', ', $array) . ")"

正如@cletus 在他的评论中所说,数据库是为这类事情而设计的。在数组中硬编码似乎是次优的做事方式。

【讨论】:

  • 我尝试过使用IN函数,问题是ID字段中列出了多个数字。所以 WHERE id 等于 "101, 103" 不适用于 IN (101, 102, 103)
  • 是时候修复你的数据库结构了。
  • ID 实际上存储在单独的表中。请参阅上面的编辑。
【解决方案3】:

您可能正在寻找IN

SELECT firstname, lastname, id FROM members WHERE id IN (1, 2, 3);

当然,您可以动态创建(1, 2, 3),例如使用内爆。


哎呀,我刚刚意识到我弄错了您的数据库架构。正如其他人所建议的那样,您应该对其进行规范化。

【讨论】:

  • “标准化”是什么意思?我对此并不陌生。
  • @middus (OT) 我最近在哪里看到你的照片? ;)
  • @Gordon 看看这里的人在做什么总是很有趣。 :)
【解决方案4】:
SELECT firstname, lastname, m.id 
FROM members m, id_table i ON m.id=id_name 
WHERE i.id < 200 

【讨论】:

    猜你喜欢
    • 2012-02-21
    • 1970-01-01
    • 1970-01-01
    • 2014-02-17
    • 1970-01-01
    • 2018-02-09
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    相关资源
    最近更新 更多