PDO - Rückgabe-Array immer leer.

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
mickedplay

PDO - Rückgabe-Array immer leer.

Beitrag von mickedplay »

Hallo ihr Experten.

Ich bin derzeit dabei, Daten aus einer MySQL-Datenbank abzurufen.
Im folgenden Pastebin-Link funktioniert allerdings nur das obere Beispiel, und das untere gibt nur ein leeres Array zurück.
Woran kann das liegen, bzw. was ist falsch?

http://pastebin.com/Q5y7ARAd

Nutze ich nur "SELECT * FROM players" funktioniert alles. Aber sobald ich "WHERE" nutzen möchte, geht garnichts mehr.

Bitte um Hilfe, und danke bereits im Vorraus, ihr seit meine letzte Hoffnung. Internetsuche hat zum Größten Teil immer nur zu dem ersten Beispiel geführt. :(
Benutzeravatar
Crizzo
Administrator
Administrator
Beiträge: 11951
Registriert: 19.05.2005 21:45
Kontaktdaten:

Re: PDO - Rückgabe-Array immer leer.

Beitrag von Crizzo »

Hi,

was soll denn =: für ein Operator sein?

Und UUID schreibst du jetzt groß weil?

Grüße
mickedplay

Re: PDO - Rückgabe-Array immer leer.

Beitrag von mickedplay »

BlackHawk87 hat geschrieben:Hi,

was soll denn =: für ein Operator sein?

Und UUID schreibst du jetzt groß weil?

Grüße
Das "UUID" in "WHERE UUID=" ist der Spaltenname. Der ist in meiner Datenbank groß geschrieben.
Und "=:" bezieht sich auf PDOStatement::bindParam() von PDO. http://php.net/manual/de/pdostatement.bindparam.php
Benutzeravatar
Elsensee
Ehemaliges Teammitglied
Beiträge: 832
Registriert: 19.05.2010 15:14
Wohnort: Hamburg
Kontaktdaten:

Re: PDO - Rückgabe-Array immer leer.

Beitrag von Elsensee »

Wenn ein leeres Array zurückgegeben wird, würde ich prüfen, ob die UUID denn auch in der Datenbank vorhanden ist. Lieber zweimal prüfen - manchmal sieht man den Wald vor lauter Bäumen nicht.

Ansonsten fällt mir nichts ein, was daran nicht klappen könnte. Vielleicht mal alternativ, die Parameter direkt im execute() übergeben? Wie hier:

Code: Alles auswählen

$query->>execute(array(':uuid' => $this->uuid)); 
Posts mostly powered by GitHub and phpBB.de Cross-Reference

2015-03-20 - Never forget 8)
mickedplay

Re: PDO - Rückgabe-Array immer leer.

Beitrag von mickedplay »

Elsensee hat geschrieben:Wenn ein leeres Array zurückgegeben wird, würde ich prüfen, ob die UUID denn auch in der Datenbank vorhanden ist. Lieber zweimal prüfen - manchmal sieht man den Wald vor lauter Bäumen nicht.

Ansonsten fällt mir nichts ein, was daran nicht klappen könnte. Vielleicht mal alternativ, die Parameter direkt im execute() übergeben? Wie hier:

Code: Alles auswählen

$query->>execute(array(':uuid' => $this->uuid)); 
Die UUID ruf ich von einer Webseite ab, die dort im JSON-Format zu finden ist. Und das klappt auch einwandfrei.

Ich hab es mal mit

Code: Alles auswählen

$query -> execute(array(':uuid', $this -> uuid));
probiert, jedoch wird mir ein Fehler geworfen:
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens' in /var/www/vhosts/<url>/httpdocs/stats/index.php:38 Stack trace: #0 /var/www/vhosts/<url>/httpdocs/stats/index.php(38): PDOStatement->execute(Array) #1 /var/www/vhosts/<url>/httpdocs/stats/index.php(4): StatsLoader->__construct() #2 {main} thrown in /var/www/vhosts/<url>/httpdocs/stats/index.php on line 38
Und Zeile 38 ist die (hier) oben gezeigte.[/i]


####### EDIT ########
Okay, nun passiert einfach garnichts:

Code: Alles auswählen

try {
    $handler = new PDO($strDbLocation, $strDbUser, $strDbPassword);
    $handler -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch (PDOException $exeption) {
    die('Sorry, aber unser Dienst ist derzeit nicht erreichbar.');
}
    $query = $handler -> prepare('SELECT * FROM players WHERE UUID=:uuid');
    $query -> bindParam(':uuid', $this -> uuid);
    $query -> execute(array(":uuid" => $this -> uuid));
    $r = $query -> fetch(PDO::FETCH_ASSOC);
    echo 'username: ' . $r['username'], '<br>';
    foreach ($r as $key => $value) {
        echo $value;
    }
Antworten

Zurück zu „Coding & Technik“