2016-05-09 17 views
0

Ich versuche, einen einfachen Webservice zu entwickeln, der meine Augmented Reality App Wikitude mit Daten versorgt. Die Daten werden als JSON bereitgestellt und aus der MYSQL-Datenbank abgerufen. Bisher konnte ich eine Verbindung zu meiner Datenbank herstellen und die Daten als JSON-Format abrufen.Ein einfacher Webservice in PHP, Methode

Allerdings muss ich es weiter entwickeln, um HTTP Get Method Requests zu machen. Hier ist mein PHP-Skript

<?PHP 
    //open connection to mysql db 
    $connection = mysqli_connect("localhost","root","","tutorial") or die("Error " . mysqli_error($connection)); 

    //fetch table rows from mysql db 
    $getData = "select * from places"; 
    $qur = $connection->query($getData); 

    while($r = mysqli_fetch_assoc($qur)){ 

    $msg[] = array("id" => $r['id'], "longitude" => $r['longitude'], "latitude" => $r['latitude'], "description" => $r['description'], "name" => $r['name']); 
    } 
    $json = $msg; 

    header('content-type: application/json'); 
    echo json_encode($json); 

    @mysqli_close($conn); 
?> 

Derzeit wenn ich Anfragen zum Beispiel machen als
http://localhost/json_internet2.php?longitude=13.88345 das Ergebnis alle Daten aus der Datenbank. Daher funktioniert es nicht.

Wie kann ich damit weitermachen? Jede Hilfe wäre nützlich.

Dank

+0

Nun, es tut, was Sie ihm gesagt haben, das heißt, alles zurückzugeben. Was genau möchten Sie tun und was haben Sie versucht? –

Antwort

0

Angenommen, Ihre Datenbank eine „Länge“ -Spalte hat, müssen Sie die SQL-Abfrage ändern Berücksichtigung der GET-Variable (Länge in Ihrem Beispiel) zu nehmen und es verwenden, um das Ergebnis zu filtern.

Beispiel:

//open connection to mysql db 
$connection = mysqli_connect("localhost","root","","tutorial") or die("Error " . mysqli_error($connection)); 

//fetch table rows from mysql db 
$getData = "select * from places"; 

if(isset($_GET['longitude']) && !empty($_GET['longitude'])){ 
    $longitude = mysqli_real_escape_string($_GET['longitude']); 
    $getData = "select * from places WHERE longitude = '$longitude' ";  
} 

$qur = $connection->query($getData); 

while($r = mysqli_fetch_assoc($qur)){ 

$msg[] = array("id" => $r['id'], "longitude" => $r['longitude'], "latitude" => $r['latitude'], "description" => $r['description'], "name" => $r['name']); 
} 
$json = $msg; 

header('content-type: application/json'); 
echo json_encode($json); 

@mysqli_close($conn); 

Das sprengt den Rahmen dieser Frage, aber beachten Sie, dass für Sicherheitsfragen, sollten Sie wirklich PDO und vorbereitete Anweisungen verwenden. Weitere Informationen: http://php.net/manual/en/pdo.prepared-statements.php

+0

Vielen Dank "Pixeline". Es hat aber nicht für mich funktioniert. Es gibt einen Fehler. Ich muss auch den Breitengrad berücksichtigen. Also meine Abfrage wäre zum Beispiel wie http: //localhost/json_internet2.php? Länge = 13.88345 & Breite = 46.611204 – Sofi

+0

Welcher Fehler? Bitte sei genau. Haben Sie tatsächlich eine "Längengrad" -Spalte in Ihrer Datenbanktabelle? Stellen Sie sicher, dass Sie den Namen verwenden. Der bereitgestellte Code geht davon aus, dass Sie eine "Längengrad" -Spalte mit den Längengraddaten für jede Zeile haben. Gleiches für den Breitengrad. – pixeline