【发布时间】:2011-03-23 13:56:42
【问题描述】:
问题1:
MySQL 表
标识 |数组
1 | 1,2,3
2 | 2
3 | 2,3
4 | 4,5,6
$_GET['id'] = 2;
$a = mysql_query("SELECT * FROM `table` WHERE `array` ??? '$_GET[id]'");
在这一步中,我想遍历整个数组,看看它是否与$_GET['id']匹配,所以它应该输出:
ID:1,2,3
问题2:
MySQL 表
标识 |数组
1 | 4,5,6
2 | 3,4,7
$_GET['id'] = 4;
$a = mysql_query("SELECT * FROM `table` WHERE `array` ??? '$_GET[id]'");
在这一步中,我只想匹配数组中的第一个元素,所以它应该输出:
id:4
我只能考虑使用 PHP 来执行此操作,但如果可能的话,我宁愿在 MySQL 查询中执行所有这些操作。
$a = mysql_query("SELECT * FROM `table`");
while($b = mysql_fetch_assoc($a))
{
$elements = explode(',', $b['array']);
foreach($elements as $element)
{
if($element == $_GET['id'])
{
echo $b['id'].'<br />';
}
}
}
或
$a = mysql_query("SELECT * FROM `table`");
while($b = mysql_fetch_assoc($a))
{
$array = $b['array'];
if(in_array($_GET['id'], $array))
{
echo $b['id'].'<br />';
}
}
那看起来很糟糕。
【问题讨论】:
-
规范化你的数据库架构