2016-03-24 2 views
0

Ich habe derzeit eine AngularJS-Anwendung, die eine Datenbank über eine Factory abfragt, die mit einem PHP-Skript verknüpft ist. Das Skript unten funktioniert genau wie geplant und gibt das JSON für Angular verwendet:PHP Script für MYSQL arbeitet an einer Datei, nicht an einer anderen

<?php 
function getCompanyDetails($company_id) 
    { 
     // Connect to the database. 
     require_once("config/connection.php"); 

     $query = "SELECT id, header, content FROM company_details WHERE company_id = ?;"; 

     $stmt = $conn->stmt_init(); 

     if($stmt->prepare($query)) { 
      $stmt->bind_param("i", $company_id); 
      $stmt->execute(); 

      $data = $stmt->get_result(); 

      while($row = $data->fetch_assoc()) { 
       $result[] = $row; 
      } 

      header("Access-Control-Allow-Origin: *"); 
      header("Content-Type: application/json; charset=UTF-8"); 

      $stmt->close(); 
      mysqli_close($conn); 
      echo json_encode($result); 
     } 
    } 

getCompanyDetails(1); 

?> 

Jetzt habe ich andere Abschnitte der Anwendung, die genau die gleiche Aktion (Auswahl Ergebnisse aus der Datenbank) erfordern, und ich bin mit dem folgenden Skript (eine fast identische Kopie zu dem oben):

<?php 
function getCompanyProjects($company_id) 
    { 
     // Connect to the database. 
     require_once("config/connection.php"); 

     $query = "SELECT title, description FROM company_projects WHERE company_id = ?;"; 

     $stmt = $conn->stmt_init(); 

     if($stmt->prepare($query)) { 
      $stmt->bind_param("i", $company_id); 
      $stmt->execute(); 
      $data = $stmt->get_result(); 

      while($row = $data->fetch_assoc()) { 
       $result[] = $row; 
      } 

      header("Access-Control-Allow-Origin: *"); 
      header("Content-Type: application/json; charset=UTF-8"); 

      $stmt->close(); 
      mysqli_close($conn); 
      echo json_encode($result); 
     } 
    } 

getCompanyProjects(1); 

?> 

das Problem ist, kehrt das zweite Skript keine Ergebnisse. Es gibt Datensätze in der Datenbank für die Tabelle und ich glaube, ich schließe die Verbindung nach jeder Verwendung. Ich stehe jetzt schon seit einiger Zeit fest, hat jemand eine Vorstellung davon, was das Problem sein könnte?

Die Abfrage SELECT title, description FROM company_projects WHERE company_id = ?; funktioniert auf phpMyAdmin.

Vielen Dank im Voraus.

+0

Ich denke nicht das ';' (Semikolon) nach dem '?' Notwendig. –

+0

Nur die ';' entfernt, scheint keinen Unterschied gemacht zu haben, ja. – Lucas

+0

Vielleicht gibt es einen Fehler, siehst du irgendetwas im MySQL-Protokoll? Und/oder vielleicht ein paar 'if (mysqli_connect_errno())' -Anweisungen einfügen, um zu sehen, ob etwas Ungewöhnliches passiert? – avip

Antwort

0

Nach fetch_assoc(), fetch_array(), mysqli_fetch_assoc() und viele andere versuchen, den Server ein paar Mal zurückzusetzen, echos und var_dumps überall platzieren, erkannte ich, die alle Daten bis zum Abschnitt while abgerufen up wurde.

Als ich tatsächlich var_dump innerhalb der While-Schleife iterierte, sah ich ein kleines Symbol für unerkanntes Zeichen. In einem der letzten Ergebnisse gab es ein unausgesprochenes Zitat. Nach dem Entfernen dieses kleinen Freundes begann fetch_assoc() wieder gut zu funktionieren. Das Problem lag in den tatsächlichen Daten, nicht im Code. Beide Skripte funktionieren jetzt ordnungsgemäß mit den richtigen Daten.

Danke für die Hilfe, alle! Ich hatte keine Ahnung was var_dump vor dieser Frage war, eine wirklich nützliche Funktion.

Verwandte Themen