2016-06-21 22 views
1

以下のコードは、データベースに情報を持つjsonを返すべきです。PHP JSON生成の問題

2つのパラメータの等級と対象をとります。問題は、私はすべての背後にデータベースにないパラメータを使用すると期待どおりのエントリが動作しますが、それがデータベースから答えを得る場合は何も表示されません。私は本当に何も意味しない。私が必要とする値は、これを試して、エラーはログファイルに記録されていません。サーバーはDebian上でphp5.6.22を使ってapache2を実行します。私は何が悪いのか分からない。うまくいけば誰かが私を助けることができます。

コード:私はあなたが以来、配列の特定のインデックスに変数をプッシュすることはできません知っているがない限り

array_push($response['books'], $book); 

:私はこれがあなたの問題かもしれないと思う

case 'get_books': 
    $grade = $_GET['grade']; 
    $subject = $_GET['subject']; 

    $sqlt = "SELECT * FROM book_type WHERE subject=".$subject." AND grade=".$grade; 
    $sql = mysqli_query($db, $sqlt); 
    if(!$sql){ 
     print(json_encode(array('response' => 2))); 
     die(); 
    } 

    $response = array(); 
    $response['books'] = array(); 
    while($row=mysqli_fetch_assoc($sql)) { 
     $book = array(); 

     $book['fullname'] = $row ["fullname"]; 
     $book['ISBN'] = $row ["ISBN"]; 
     $book['id'] = $row ["id"]; 

     array_push($response['books'], $book); 
    } 
    $response['response'] = "1"; 
    print(json_encode($response)); 
    die(); 
+1

表示エラーをオンにしたり、エラーログを確認しましたか? – bassxzero

+0

*今、エラーがログファイル*に記録されています。 – apokryfos

+0

ミスタイプ...私はno –

答えて

0

押されているアイテムに対してキーが提供されます。

次のようにこれを行う方が良いでしょう:あなたは

case 'get_books': 
$grade = $_GET['grade']; 
$subject = $_GET['subject']; 

$sqlt = "SELECT * FROM book_type WHERE subject=".mysqli_real_escape_string((htmlspecialchars_decode($subject, ENT_QUOTES)))." AND grade=".mysqli_real_escape_string((htmlspecialchars_decode($grade, ENT_QUOTES))); 
$sql = mysqli_query($db, $sqlt); 
if(!$sql){ 
    print(json_encode(array('response' => 2))); 
    die('sql failed'); 
} 

$response = array(); 
$response['books'] = array(); 
$response['validator'] = 'valid'; 
$i = 0; 
while($row=mysqli_fetch_assoc($sql)) { 
    $book = array(); 
    $book['fullname'] = $row["fullname"]; 
    $book['ISBN'] = $row["ISBN"]; 
    $book['id'] = $row["id"]; 
    $response['books'][$i] = $book; 
    $i++; 
} 
$response['response'] = "1"; 
var_dump($response); 
//echo json_encode($response); 
die(); 
+0

これは以下を返します: 警告:array_push()は配列1になることを期待しています、行は/var/www/html/test/api/app.php 58行にあります。 –

+0

@FabianS。私は私のソリューションでarray_push()を使用しなかったので、どうやってそのエラーを取得しましたか? – Jay

+0

私はそれを修正しましたが、問題は全く同じものではありません。 –

関連する問題