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であると想定しています。ブール値は...で指定されます。

MySqlの代わりにMysqliを使用するのは初めてなので、関数の使用方法に問題があると思います。

4

1 に答える 1

0

もちろん、他のサーバーで動作するため、何か問題が発生しているわけではありません。
エラーの原因はリモートサーバー環境です。

ただし、mysqlを使用しているかmysqliを使用しているかに関係なく、実行する必要があることが1つあります。クエリ結果を確認してエラーを処理する必要があります。
少なくともこのようにしてください:

$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 に答える