当我需要所有项目时,MySQLi查询在列的第一项停止

时间:2012-03-06 12:32:50

标签: php mysqli

我希望从image_namecategory匹配的其中一个表中获取所有account_id值。 该查询连接3个表。

我正在使用mysqli。

SELECT image_name 
FROM add_images, item, user_item
WHERE user_item.account_id = '$accountId' AND item.category = '$category';

但是当这个查询执行并var_dump()结果时,我只找到第一条记录?应该有8个项目?

我通过在返回1的数组上返回count()来确认这一点。

如果我在phpmyadmin中运行此查询,查询会成功运行并找到所有8个项目,但它们会重复8次,不确定是什么意思?

我已将image_name替换为*我也尝试过image_name.*,而image_name*在我的代码和phpmyadmin中都失败了。

当我转出我得到的对象时:

object(mysqli_result)#3 (5) { ["current_field"]=> int(0) ["field_count"]=> int(1) ["lengths"]=> NULL ["num_rows"]=> int(512) ["type"]=> int(0) } int(1) string(29)

我也尝试过以下建议:     How get all values in a column using PHP?

while($row = mysqli_fetch_array($result,MYSQL_ASSOC))

但建议的代码也失败了。

以下是我的代码:

public function searchItems($accountId, $catagory,$userId){
    $imagePath = "D:\imagesdb\images\\" . $userId;
    $thumb_path = $imagePath . "t\\";
    $conn = $this->create_connection('read');
    $sql = "SELECT image_name FROM add_images, item, user_item WHERE user_item.account_id='$accountId' AND item.catagory='$catagory'"; 
    $result = $conn->query($sql)or die(mysql_error());
    var_dump($result);
    while ($row = mysqli_fetch_array($result)){
        $path = $thumb_path . $row['image_name'];
        $result = count($path);
        var_dump($result);
        return $path;
    }
    $conn->close();
}

我也尝试了一个准备好的声明我遇到了同样的问题!

有人有什么建议吗?这让我很生气!

1 个答案:

答案 0 :(得分:1)

你在while循环中无条件地返回$ path。所以函数在获取一行后返回。这可能不是你想要的。

您可能想要创建一个数组,将所有图像路径添加到该数组并在函数末尾返回该数组。