我需要从我的sql数据库中选择类别ID。
我有一个变量$product_id
,对于每个产品ID,表中有三行我需要使用PHP选择。
如果我"SELECT * FROM table_name WHERE product_id='$prodid'";
我只会得到一个在顶部。
如何选择包含相同category_id
的所有三个product_id
?
答案 0 :(得分:1)
SQL似乎是正确的,但为什么要将product_id存储在类别表中?如果是一对多关系,最好只在产品表中存储category_id。
答案 1 :(得分:1)
我想你使用的是PHP的mysql函数,这是正确的吗?我正在确定你的查询实际上是返回所有三行,但你并没有获取所有这些行。
$sql = "SELECT * FROM table_name WHERE product_id='$prodid'";
$r = mysql_query($sql, $conn); //where $conn is your connection
$x = mysql_fetch_SOMETHING($r); //where something is array, assoc, object, etc.
fetch函数一次只提供一行。你说你需要三个,所以需要执行三次。
$x[0] = mysql_fetch_assoc($r);
$x[1] = mysql_fetch_assoc($r);
$x[2] = mysql_fetch_assoc($r);
或者这会更好
while($curRow = mysql_fetch_assoc($r)) //this returns false when its out of rows, returns false
{
$categoryIds[] = $curRow['category_id'];
}
如果不这样做,那么您的查询实际上只返回一行,我们需要查看您的表/字段以及样本数据。
答案 2 :(得分:0)
SQL查询对于您想要执行的操作是正确的。它将在table_name中选择所有记录,字段为product_id = $ prodid(不仅是1或3,而是与变量匹配的任何记录)
要选择一些记录,您应该使用LIMIT关键字
您应该查看表结构和变量$ prodid以查找问题。