从MYSQL中选择几行

时间:2010-12-19 07:03:46

标签: php mysql

我需要从我的sql数据库中选择类别ID。 我有一个变量$product_id,对于每个产品ID,表中有三行我需要使用PHP选择。

如果我"SELECT * FROM table_name WHERE product_id='$prodid'";我只会得到一个在顶部。

如何选择包含相同category_id的所有三个product_id

3 个答案:

答案 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以查找问题。