为什么我现在不能使用COUNT(*)?

时间:2014-01-24 23:07:34

标签: php

我想计算一个表中的所有东西来制作网站,我在我的php文件中使用了这几个确切的代码,但现在突然间根本不再工作了......我疯了

$stmt = $mysqli->query("SELECT COUNT (*) AS Anzahl FROM '$tablename'");
$anzahl = $stmt->fetch_array();
$eintraege = $anzahl["Anzahl"];
$stmt->close();

$max_eintraege = 2;


if($eintraege <=2){
    $seiten = 1;


}else{
    $seiten = $eintraege / $max_eintraege;
    $seiten +=1;
}


$start = $_GET["site"] * $max_eintraege - $max_eintraege;
if(!isset($_GET["site"])){
    $start = 0;
}

我得到的只是:

致命错误:在第2377行/home/u144584875/public_html/index.php中的非对象上调用成员函数fetch_array()

我无法找出问题是什么,它在我的脚本中工作了5次但现在不行。 一切都是正确的,问题是什么?

3 个答案:

答案 0 :(得分:3)

你应该添加一些错误处理,但问题是:

$stmt = $mysqli->query("SELECT COUNT (*) AS Anzahl FROM '$tablename'");

您正在引用您的表名,它应该是:

$stmt = $mysqli->query("SELECT COUNT (*) AS Anzahl FROM $tablename");

$stmt = $mysqli->query("SELECT COUNT (*) AS Anzahl FROM `$tablename`");

如果表名是mysql中的保留字,则以数字等开头

编辑:如果在打开数据库连接之前(或当前代码之上的任何位置...)添加此内容,mysqli将抛出错误并告诉您确切的错误:

mysqli_report(MYSQLI_REPORT_STRICT);
// ...
$stmt = $mysqli->query("SELECT COUNT (*) AS Anzahl FROM `$tablename`");
// ...

答案 1 :(得分:0)

您的SQL语法错误。表名不应包含在单引号(')中。使用反引号代替逃避它们。

按如下方式更新您的SQL查询:

SELECT COUNT (*) AS Anzahl FROM `$tablename`

答案 2 :(得分:0)

documentation of mysqli::query说:

  

失败时返回FALSE。对于成功的SELECT,SHOW,DESCRIBE或EXPLAIN查询,mysqli_query()将返回一个mysqli_result对象。

显然,您有错误,并返回FALSE。使用mysqli::$error找出它是什么。