Das Problem ist gelöst!
Eine Abfrage mit PDO prepared statements muss prinzipiell nach folgendem Schema ablaufen (eine große Hilfe war mir dabei die
PHP-Funktionsreferenz):
prepare() bereitet die DB-Abfrage mit Platzhaltern vor
execute() führt die Abfrage aus
fetch() bzw. fetchAll() ruft die Ergebnisse ab
query() dagegen macht in etwa das gleiche wie execute() und fetch() zusammen, bietet allerdings nicht die Möglichkeit mit Platzhaltern zu arbeiten. Seh ich das richtig?
Meine funktionierende Abfrage sieht jetzt so aus:
PHP-Code:
<?php
if ($_POST) {
$conn = dbConnect('query');
$stmt = $conn->prepare("SELECT * FROM geoplz WHERE plz =? OR plz =?");
/*$stmt->bindValue(1,$_POST['plz1'],PDO::PARAM_STR);
$stmt->bindValue(2,$_POST['plz2'],PDO::PARAM_STR);
$ok = $stmt->execute();*/
$ok = $stmt->execute(array($_POST['plz1'], $_POST['plz2']));
$result = $stmt->fetchAll(PDO::FETCH_ASSOC); ?>
<pre><?php echo print_r($result);?></pre>
<?php
$error = $conn->errorInfo();
}
Hier noch der Nachweis, dass es klappt

:
Array
(
[0] => Array
(
[plz] => 01217
[lon] => 13.74451633873620
[lat] => 51.01714374820780
[ex] => 0.61107378213590
[ey] => 0.14946681812031
[ez] => 0.77733422867330
[ort] => Dresden
)
[1] => Array
(
[plz] => 27442
[lon] => 9.02204851137085
[lat] => 53.38158486216570
[ex] => 0.58910322828882
[ey] => 0.09353718433403
[ez] => 0.80262580419928
[ort] => Gnarrenburg
)
)
Die Abfrage funktioniert natürlich auch unter Verwendung von bindValue() wie von PHP-Desaster vorgeschlagen. Der Unterschied von bindParam() und bindValue() ist mir dabei allerdings noch nicht ganz klar...Naja, ich bleibe sowieso erst mal bei meiner Lösung. Ich finde sie so schön knapp.
Morgen will ich mit meinen Fingerübungen weiter machen; Entfernungberechnungen einmal mit Hilfe der Polarkoordinaten und dann noch über das Skalarprodukt. Mal sehn, welcher Weg schneller ist. "Elisabeth" ist gerade raus

, ich mach Feierabend und schau da mal rein.
Bis dann
lippes