Problem mit PDO

14/11/2015 - 20:54 von Peter Müller | Report spam
Hallo,

ich arbeite mich gerade mit PDO ein und komme an einem Punkt nicht
weiter, ich hoffe ihr könnt mir helfen. Es geht um die Umsetzung dieser
SQL-Abfrage:
mysql> SELECT min(jahr) as minjahr
-> FROM wiealt
-> WHERE baldwin > 100000;
++
| minjahr |
++
| 1950 |
++
1 row in set (0.00 sec)

Mein (reduziertes) PDO-Codeschnipsel sieht so aus:

$firma = 'baldwin';
$nummer = 100000;
$query2 = "
SELECT min(jahr) as minjahr
FROM wiealt
WHERE :firma > :nummer";
$stmt = $dbmerz -> prepare($query2);
$stmt -> bindValue(':firma', $firma, PDO::PARAM_STR);
$stmt -> bindValue(':nummer', $nummer, PDO::PARAM_INT);
$stmt -> execute();
$result2 = $stmt->fetchAll(PDO::FETCH_OBJ);
if($result2)
{
$max=$result2[0]->minjahr;
var_dump($result2);
}
print "<p>Max = $max.</p>";

Die unerwartete Ausgabe:
array(1) { [0]=> object(stdClass)#86 (1) { ["minjahr"]=> NULL } }
Notice: Undefined variable: min in
/var/www/html/merz-klaviere.de/service/wie_alt.php on line 180

Max = .

Kann mir hier jemand weiterhelfen?

Viele Grüße,

Peter
 

Lesen sie die antworten

#1 Arno Welzel
14/11/2015 - 21:32 | Warnen spam
Peter Müller schrieb am 2015-11-14 um 20:54:

Hallo,

ich arbeite mich gerade mit PDO ein und komme an einem Punkt nicht
weiter, ich hoffe ihr könnt mir helfen. Es geht um die Umsetzung dieser
SQL-Abfrage:
mysql> SELECT min(jahr) as minjahr
-> FROM wiealt
-> WHERE baldwin > 100000;
++
| minjahr |
++
| 1950 |
++
1 row in set (0.00 sec)

Mein (reduziertes) PDO-Codeschnipsel sieht so aus:

$firma = 'baldwin';
$nummer = 100000;
$query2 = "
SELECT min(jahr) as minjahr
FROM wiealt
WHERE :firma > :nummer";



Wieso nicht in einer Zeile? Eine Aufteilung auf mehrere Zeilen sollte
auch eher so aussehen:

$query2 = "SELECT min(jahr) as minjahr ".
"FROM wiealt ".
"WHERE :firma > :nummer";

Siehe auch <http://php.net/manual/de/language.t...ng.php>

$stmt = $dbmerz -> prepare($query2);
$stmt -> bindValue(':firma', $firma, PDO::PARAM_STR);
$stmt -> bindValue(':nummer', $nummer, PDO::PARAM_INT);
$stmt -> execute();
$result2 = $stmt->fetchAll(PDO::FETCH_OBJ);
if($result2)
{
$max=$result2[0]->minjahr;
var_dump($result2);
}
print "<p>Max = $max.</p>";

Die unerwartete Ausgabe:
array(1) { [0]=> object(stdClass)#86 (1) { ["minjahr"]=> NULL } }
Notice: Undefined variable: min in
/var/www/html/merz-klaviere.de/service/wie_alt.php on line 180



Welche Zeile ist 180 in dem obigen Beispiel?



Arno Welzel
http://arnowelzel.de
http://de-rec-fahrrad.de
http://fahrradzukunft.de

Ähnliche fragen