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.
mickedplay

PDO - Rückgabe-Array immer leer.

Beitragvon mickedplay » 25.10.2015 15:44

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: 10256
Registriert: 19.05.2005 21:45
Kontaktdaten:

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

Beitragvon Crizzo » 25.10.2015 17:02

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.

Beitragvon mickedplay » 25.10.2015 18:46

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
Ehemaliger
Beiträge: 832
Registriert: 19.05.2010 15:14
Wohnort: Hamburg
Kontaktdaten:

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

Beitragvon Elsensee » 25.10.2015 19:58

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.

Beitragvon mickedplay » 25.10.2015 20:18

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.



####### 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;
    }


Zurück zu „Coding & Technik“