LIMIT在MariaDB中不起作用-尝试了很多事情

时间:2019-02-19 21:04:26

标签: mysql mysqli phpmyadmin 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部分中也可以正常工作。

2 个答案:

答案 0 :(得分:3)

您实际从中显示结果的查询是此查询:

$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循环中使用查询实现什么目的,但是在该循环中它没有做任何事情,因此您可以删除它。

答案 1 :(得分:0)

TOP 10是SQL Server语法,而不是MySQL。 MySQL使用LIMIT 10的效果非常相似。

由于在您的代码中看不到TOP 10,它可能是与SQL Server绑定的某些接口程序包吗?