首页 > 解决方案 > LIMIT 在 MariaDB 中不起作用 - 尝试了很多东西

问题描述

$dbhost = "localhost";  
$dbuser = "root";
$dbpass = "";
$dbname = "igscript";
$con = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);
$query = "SELECT * FROM lastsearches";
$result = mysqli_query($con, $query);

if(mysqli_connect_errno()) {
    die("DB Error: " . mysqli_connect_error() . " ( " .mysqli_connect_errno() . ")");
}   
while($row = mysqli_fetch_assoc($result)) {
    $query = "SELECT * FROM lastsearches Order By data DESC LIMIT 1;";
    echo '<center><p>'.$row["name"].'</p> </center><hr>';
    if(!mysqli_query($con, $query)) {
        die('Error : '.mysqli_error($con));
    }
}
$result = mysqli_query($con, $query);

每当我使用 LIMIT 1 或 LIMIT 10 时;在 $query 处,它根本没有效果。仍然显示相同数量的行。正如我在互联网上看到的那样,我也尝试了 TOP 10 或 TOP(10),我得到了

错误:您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以在第 1 行的“10 name FROM lastsearches Order By data DESC LIMIT 1”附近使用正确的语法

$query = "SELECT TOP 10 name FROM lastsearches Order By data DESC";

-> 这是查询;此外,第一个查询在 phpmyadmin,SQL 部分也能正常工作。

标签: phpsqlmariadb

解决方案


您实际显示结果的查询是这个:

$query = "SELECT * FROM lastsearches";
$result = mysqli_query($con, $query);

如果要限制结果,则需要编辑该查询,即

$query = "SELECT * FROM lastsearches Order By data DESC LIMIT 1";
$result = mysqli_query($con, $query);

我不确定您在 while 循环中尝试使用查询来实现什么,但它在该循环内没有做任何事情,因此您可能可以将其删除。


推荐阅读