【发布时间】:2014-07-26 14:38:57
【问题描述】:
我试图找到一种更好的方法来一次返回 2 个表。
我的第一张桌子是:
[ID] [area]
1 13,12,15
6 18,17,13
第二个表是:
[areaname] [singlearea]
textOf12 12
textOf18 18
textOf15 15
现在,我需要为每个[ID]点击返回区域名称,例如:
对于ID: 1、我需要如下数组:(textOf12,textOf15)
和 对于 ID 6 我需要:(textOf18) 仅。
这就是我现在拥有的(我不认为它是一个很好的代码):
$getall = "SELECT * FROM table1";
$resultfull = mysql_query($getall);
while ($res = mysql_fetch_assoc($resultfull))
{
$uarray = array();
$sqlarea = explode(",", $res['area']);
foreach($sqlarea as $userarea)
{
$areaarray = runquery("SELECT areaname From table2 WHERE singlearea = '".$userarea."'");
$value = mysql_fetch_object($areaarray);
array_push($uarray,$value->areaname);
}
var_dump($uarray);
有什么建议吗?
非常感谢!
【问题讨论】:
-
"有什么建议吗?"修复您的数据结构,这样您就不会将数字列表存储为逗号分隔的字符。 SQL 有一个非常好的数据结构来存储列表。它被称为表。在这种情况下,特定类型的表称为联结表。
-
考虑到数据结构,这是你能做的。花哨的代码技巧并不能替代强大的数据库架构。
-
你说得对,我改一下结构,谢谢你的建议!