我想计算一个表中的所有东西来制作网站,我在我的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次但现在不行。 一切都是正确的,问题是什么?
答案 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
找出它是什么。