MySQL仅返回一行

6

我有这段简单的PHP代码:

$query = mysql_query("SELECT `title`, `url_title` FROM `fastsearch` WHERE `tags` LIKE '%$q%' LIMIT 5");
    $query2 = mysql_fetch_assoc($quer);
    print_r($query2);

它只会返回这样的结果:
Array ( [title] => Kill Bill Vol 1. [url_title] => kill_bill_vol_1 )

我的表格有3500+行,通过PhpMyAdmin运行SQL完美无误。

5个回答

9
$query = mysql_query("SELECT `title`,
                             `url_title`
                        FROM `fastsearch`
                       WHERE `tags`
                            LIKE '%$q%'
                       LIMIT 5");

while ($row = mysql_fetch_assoc($query)) {
    print_r($row);
}
  • 你在示例中拼错了$query
  • mysql_fetch_assoc()每次被调用时都会返回一行数据,当没有更多的行时则返回FALSE。可以利用这个特性,在条件语句中将其赋值给一个变量。在while()循环中,$row将是当前行。

当它允许我时,我将在3分钟内接受您的答案。我已经使用了foreach,但我不知道如何使用while实现这一点: - wintercounter
foreach(mysql_fetch_assoc($quer) as $row => $item) { $arrResults[$row] = $item; }我需要这个,因为我正在使用json_encode函数处理JSON数据。 - wintercounter
@wintercounter 返回的值不是你想要的数组,所以我认为那样做行不通(它只会循环遍历第一个返回行的数组成员)。 - alex

3

你没有正确获取结果。

mysql_fetch_assoc()只会一次返回一行。使用循环来读取所有行。

$query = mysql_query("SELECT `title`, `url_title` FROM `fastsearch` WHERE `tags` LIKE '%$q%' LIMIT 5");

$resultSet = array();
while ($cRecord = mysql_fetch_assoc($query)) {
  $resultSet[] = $cRecord;
}

2

mysqli_fetch_assoc() 是一个函数,它可以获取多个记录并通过 print_r() 显示出来。

$query = "SELECT `title`, `url_title` FROM `fastsearch` WHERE `tags` LIKE '%$q%' LIMIT 5";
$result = mysqli_query($conn,$query);
while(null ! == ($query = mysqli_fetch_assoc($result))){
     print_r($query);
}

2
请对这个答案进行一些解释。 - Pankaj Makwana

2

正如http://php.net/manual/en/function.mysql-fetch-assoc.php文档所述:

mysql_fetch_assoc — Fetch a result row as an associative array

如果你想迭代结果,你需要使用循环,例如:

while ($row = mysql_fetch_assoc($result)) {
    echo $row["title"];
    echo $row["url_title"];       
}

1

方法fetch_assoc()返回一行数据,您需要使用循环进行处理


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接