我有以下查询在本地工作,但我在远程服务器上收到警告。
$query_getMainPage = $conCreative->query("SELECT l.*, p.* FROM languagep l INNER JOIN pages p ON (l.languagePageBelongs=p.pageID) WHERE p.pageBelongs=0");
$row_getMainPage = mysqli_fetch_assoc($query_getMainPage);
$totalRows_getMainPage = mysqli_num_rows($query_getMainPage);
我得到的警告是
警告:mysqli_fetch_assoc()要求参数1为mysqli_result,在...中给出布尔值
这是我第一次使用Mysqli而不是MySql,所以我猜我在使用函数的方式上做错了。
答案 0 :(得分:0)
当然,你在其他服务器上工作时没有做错事 它是导致错误的远程服务器环境。
但是,无论您使用的是mysql还是mysqli,都应该做一件事 - 您必须检查查询结果并处理错误。
至少这样做:
$sql = "SELECT count(*) FROM languagep l INNER JOIN pages p
ON (l.languagePageBelongs=p.pageID) WHERE p.pageBelongs=0";
$res = $con->query($sql) or trigger_error($con->error."[$sql]");
但你的代码还存在另一个问题 - mysqli 不要使用mysqli。 使用PDO 它将为您节省很多令人头疼的问题。
PDO使用简单但功能强大
首先,创建一个连接
$dsn = 'mysql:dbname=test;host=localhost;charset=utf8';
$opt = array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
);
$pdo = new PDO($dsn, $user, $pass, $opt);
然后用它来运行查询:
$sql = "SELECT count(*) FROM languagep l INNER JOIN pages p
ON (l.languagePageBelongs=p.pageID) WHERE p.pageBelongs=0";
$sth = $pdo->prepare($sql);
$sth->execute();
$totalRows = $sth->fetchColumn();
如果您不仅需要计算,还需要所有数据:
$sql = "SELECT * FROM languagep l INNER JOIN pages p
ON (l.languagePageBelongs=p.pageID) WHERE p.pageBelongs=0";
$sth = $pdo->prepare($sql);
$sth->execute();
$data = $sth->fetchAll();
$totalRows = count($data);