0

我有以下在本地工作的查询,但我在远程服务器上收到警告。

$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,所以我想我在使用函数的方式上做错了。

4

1 回答 1

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]");
  • 因此,您将收到有关 mysql 错误的通知并能够采取适当的措施。

但是您的代码还有另一个问题 - 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);
于 2013-02-26T06:27:00.703 回答