2016-06-21 13 views
1

Der folgende Code sollte ein JSON mit Informationen in einer Datenbank zurücksenden.PHP JSON Generation Probleme

Es braucht zwei Parameter Klasse und Thema. Das Problem ist, wenn ich Parameter nicht in der Datenbank hinterher benutze, funktioniert alles wie erwartet kein Eintrag, aber wenn es eine Antwort von der Datenbank bekommen würde, erscheint nichts. Ich meine wirklich nichts. Die Werte, die ich brauche, sind da, ich habe es versucht und keine Fehler in der Logging-Datei protokolliert. Als Server läuft apache2 mit php5.6.22 auf Debian. Ich weiß nicht, was ich falsch gemacht habe. Hoffentlich kann mir jemand helfen.

Der Code:

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

Haben Sie einschalten Anzeigefehler oder überprüfen Sie Ihre Fehlerprotokolle? – bassxzero

+0

* jetzt Fehler in der Logging-Datei * - würde helfen, wenn wir wissen, was diese Fehler waren. – apokryfos

+0

vertippt ... ich meine nein –

Antwort

0

Ich denke, das Ihr Problem sein könnte:

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

soweit ich weiß man nicht, da eine Variable in einem bestimmten Index eines Arrays schieben kann kein Der Schlüssel wird für den gedrückten Gegenstand bereitgestellt.

Es wäre besser, dies zu tun, wie folgt:

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

Dies gibt: Warnung: array_push() erwartet Parameter 1 Array, Null in /var/www/html/test/api/app.php in Zeile 58 –

+0

@ FabianS. Ich habe array_push() in meiner Lösung nicht verwendet. Wie haben Sie diesen Fehler erhalten? – Jay

+0

Ich habe es behoben, aber das Problem ist das gleiche ist nichts gedruckt –