2017-05-30 10 views
-1

In meinem PDO-Skript habe ich meine Datenbank abgefragt, um mir alle Benutzer in meiner Datenbank in meinem lokalen Rechner zu geben, aber alles, was ich sehe, ist "SQLSTATE [HY000] : Allgemeiner Fehler "SQLSTATE [HY000]: Allgemeiner Fehler und Array (0) {}

Hier ist mein Skript;

<?php 
ini_set('display_errors','on'); 
require_once('connect.php'); 

try{ 

$username='charlyo'; 
$con=$connect->query('select * from users where username=:username'); 
var_dump($con->fetchAll()); 
} 
catch(PDOException $e){ 
    echo $e->getMessage(); 

} 

?> 

und während der Fehlersuche habe ich versucht, vorbereitete Anweisungen zu verwenden. Ich bekomme jetzt "Array (0) {}", ohne irgendwelche Arrays zurückzugeben, während ich fetchAll-Methode verwendet habe.

Hier ist das zweite Skript von vorbereiteter Aussage:

<?php 
ini_set('display_errors','on'); 
require_once('connect.php'); 

try{ 

$username='charlyo'; 
$con=$connect->prepare('select * from users where username=:username'); 
$con->bindParam(':username',$username); 
$con->execute(); 
var_dump($con->fetchAll()); 
} 
catch(PDOException $e){ 
    echo $e->getMessage(); 

} 

?> 
+0

'query' nimmt keine Platzhalter, Sie müssen auch mit Platzhaltern binden. – chris85

+0

Sie erhalten den Fehler von beiden Skripten oder nur die erste? – chris85

+0

Verwenden Sie 'prepare' in der ersten Abfrage. Tun Sie dasselbe, was Sie in der zweiten Abfrage für die erste Abfrage getan haben – Akintunde007

Antwort

1

entfernen use charles; von Abfrage. Ich bin mir nicht sicher, warum Sie es benutzt haben, aber nehmen Sie es von der Abfrage ab und überprüfen Sie.

+0

Dank @swapgs, es hat gerade funktioniert, vielen Dank Bruder – charlyo

2

Sie sollten auch den Inhalt der Datei connect.php veröffentlichen, damit wir sicher sein können, wie Sie das PDO-Objekt instanziieren (stellen Sie sicher, dass Sie die Kennwörter entfernen).

Gestapelte Abfragen (mehrere Abfragen getrennt durch ;) werden standardmäßig nicht in PDO unterstützt, der Emulationsmodus muss aktiviert sein (PDO::ATTR_EMULATE_PREPARES), aber in Ihrem Fall ist dies nicht unbedingt erforderlich.

Um Ihre zweite Beispiel Arbeit zu machen, sollten Sie nur den use charles; Teil entfernen und sicherstellen, dass dbname=charles im DSN zu übergeben, die Sie PDO Konstruktor bereitstellen.

+0

Ich habe "charles" aus meiner Abfrage entfernt und ich habe den DB-Namen = Charles geändert, aber nichts ist geändert, es ist immer noch zeigt "array (0) {}, was soll ich sonst noch tun" es ist das zweite Beispiel, das mich jetzt beunruhigt, das ist die vorbereitete Meldung. Ich habe den allgemeinen Fehler der Abfrage-Anweisung im ersten Beispiel gelöst. – charlyo

+0

@charlyo: stellen Sie sicher, dass Sie mindestens einen Datensatz mit einem Benutzernamen haben, der 'charlyo' ist. Ich habe das zweite Beispiel zu Hause ausprobiert, bevor ich diesen Kommentar geschrieben habe und es funktioniert wie erwartet. –

+0

Ja, ich habe Benutzernamen charlyo in meiner Datenbank, verstehe nicht, was passiert, mehr Hilfe plz, ich brauche es wirklich – charlyo

Verwandte Themen