2016-09-27 12 views
-1

誰でも助けてくれますか?私はテーブルからすべてのデータを取得しようとしています。ブール値として返ってきます。ブール値が与えられた理由は

<?php 
    $con = mysqli_connect("localhost", "root", "", "student"); 

    $query = "SELECT * FROM `announcement` ORDER BY `announce_id` DESC"; 

    $result = mysqli_query($con, $query); 

    while($row = mysqli_fetch_assoc($result)){ 
     $data[] = $row; 
    } 

    echo json_encode($data); 
?> 

与え、エラーがした

> Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, 
> boolean given in D:\Xampp\htdocs\student\announcement.php on line 8 
> 
> Notice: Undefined variable: data in 
> D:\Xampp\htdocs\student\announcement.php on line 12 null 
+0

いつもエラー($ con、$ query)またはdie($ con-> error) ' – Ghost

+2

クエリが失敗した場合、ブール値falseを返します – nogad

+0

[mysqli \ _fetch \ _array()/ mysqli \ _fetch \ _assoc()/ mysqli \ _fetch \ _row()は、パラメータ1がresourceまたはmysqli \ _result、boolean givenであることを期待しています](http://stackoverflow.com/questions/2973202/mysqli-fetch-array-mysqli-fetch-assoc -mysqli-fetch-row-expects-parameter-1) –

答えて

0

mysqli_queryがfalseを返し、$ resultにbool(false)が含まれているため、mysqli_fetch_assocにmysqli_resultオブジェクトが必要で、代わりにboolを与えたときに不平を言いました。なぜmysqli_queryがfalseを返すのか分からず、エラー報告が有効になっていないので、PHPはなぜあなたにそのことを伝えません。コードをエラーチェックしてこれを先にキャッチし、PHPが何が間違っているかを教えてください。それを行うための最も簡単な方法:いつでもエラーこの

function exception_error_handler($severity, $message, $file, $line) { 
    if (!(error_reporting() & $severity)) { 
     // This error code is not included in error_reporting 
     return; 
    } 
    throw new ErrorException($message, 0, $severity, $file, $line); 
} 
set_error_handler("exception_error_handler"); 

は今、PHPは詳細なレポートを与える必要がありますように私も、例外にエラー変換エラーハンドラを実行することをお勧めします

<?php 
error_reporting(E_ALL); 
if(!mysqli_report(MYSQLI_REPORT_ALL)){ 
throw new RuntimeException("unable to set mysqli_report to MYSQLI_REPORT_ALL !"); 
} 

を使用してスクリプトを起動mysqli_queryがfalseを返す理由も含めて、発生しました。

0

あなたは「発表」テーブル内のデータを持っていることを確認してください。

mysqli_num_rows()関数を使用すると、結果セットで返される行数を確認できます。

はこれを試してみてください:

$con = mysqli_connect("localhost", "root", "", "student"); 
$query = "SELECT * FROM `announcement` ORDER BY `announce_id` DESC"; 
$result = mysqli_query($con, $query); 

$rowcount = mysqli_num_rows($result); //returns number of rows 

if($rowcount > 0) { 
    while($row = mysqli_fetch_assoc($result)){ 
    $data[] = $row; 
    } 
    echo json_encode($data); 
} 

は、私たちはそのための任意のクエリ/関心の包みを知ってみましょう。

+0

彼の問題はクエリエラーまたは接続エラーで、空のテーブルではありません –

関連する問題