Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP的SQL查询-从以逗号分隔并链接的一列中获取数据_Php_Sql - Fatal编程技术网

使用PHP的SQL查询-从以逗号分隔并链接的一列中获取数据

使用PHP的SQL查询-从以逗号分隔并链接的一列中获取数据,php,sql,Php,Sql,我对sql查询有问题 我有两张桌子 ** T1 ** ID | Cat --------- 1 | TEXT 2 | TTTT 我需要sql查询从t1.ID列中从表2(t2)中获取数据,但行1=1,2和行2=3,4,6中的所有数据以及如何从中创建链接 我现在拥有的是 $query = "SELECT * FROM T2, T1 WHERE AutID=$ID AND T1.Id=T2.T1ID"; 对于链接,我使用while循环 $catName = $row["Cat"]; $

我对sql查询有问题

我有两张桌子

** T1 **
ID | Cat
---------
1  | TEXT

2  | TTTT

我需要sql查询从t1.ID列中从表2(t2)中获取数据,但行1=1,2和行2=3,4,6中的所有数据以及如何从中创建链接

我现在拥有的是

$query = "SELECT * 
FROM T2, T1
WHERE AutID=$ID 
AND T1.Id=T2.T1ID";
对于链接,我使用while循环

$catName = $row["Cat"];
$catID = $row["Id"];

echo "<a href=file.php?ID=".$catID . ">" .$catName."</a>
$catName=$row[“Cat”];
$catID=$row[“Id”];
回声“

因为您在T1ID列中存储了多个键,所以需要查询数据,然后在php中将其拆分为单独的键,然后执行第二次查询以获得所需的数据

有更好的方法来设计数据库,如果有可能的话,我会重新设计,但是如果你坚持这种结构,那么你可以做以下事情

$query = "SELECT * FROM T2 WHERE AutID=$ID";

$res = mysql_query($query) || die(mysql_error());

while ($row = mysql_fetch_assoc($res)) {

   $keys = explode(',', $row['T1ID']);

   foreach ($keys as $key) {
      $query2 = "SELECT * FROM T1 WHERE ID=$key";

      $res2 = mysql_query($query2) || die(mysql_error());

      // do what you want with your data now
   }
}

要改进bumperbox的答案并减少对服务器的查询,您可以使用IN语句,而不是执行多个查询:

$query2 = "SELECT * FROM T1 WHERE ID in (" . explode(',', $row['T1ID']) . ")";
$res2 = mysql_query($query2) || die(mysql_error());
$query2 = "SELECT * FROM T1 WHERE ID in (" . explode(',', $row['T1ID']) . ")";
$res2 = mysql_query($query2) || die(mysql_error());