Sebastian Wramba
Erfahrenes Mitglied
Hallo zusammen,
ich bastel grad an einer Adresssuchfunktion und gestalte das ganze mit Prepared Statements und PDO.
Nun habe ich eine Abfrage mit COUNT(*), die mir korrekt zurückliefert, wieviele Datensätze gefunden wurden. Die Abfrage danach ergibt leider nur "bool(false)".
Ich habs chon alles mögliche ausprobiert, aber nichts hilft wirklich. Die Abfrage hat ohne das COUNT(*)
Hier mal der Code:
Output:
Treffer: 1
SQL: string(100) "SELECT vorname,nachname,strasse,plz,ort,firma,web,mail FROM fachkraefte WHERE vorname LIKE :vorname"
Query: bool(false)
Hat jemand ne Idee dazu, warum $query nicht funktioniert? Ich hab keine mehr.
ich bastel grad an einer Adresssuchfunktion und gestalte das ganze mit Prepared Statements und PDO.
Nun habe ich eine Abfrage mit COUNT(*), die mir korrekt zurückliefert, wieviele Datensätze gefunden wurden. Die Abfrage danach ergibt leider nur "bool(false)".
Ich habs chon alles mögliche ausprobiert, aber nichts hilft wirklich. Die Abfrage hat ohne das COUNT(*)
Hier mal der Code:
PHP:
<?php
// db connection
include("db.inc.php");
// complete statement
$sql = "SELECT vorname,nachname,strasse,plz,ort,firma,web,mail FROM fachkraefte WHERE ";
// add search terms to complete statement
$prev = false;
if($_POST['vorname'] != "") {
$sql .= " vorname LIKE :vorname";
$prev = true;
}
if($_POST['nachname'] != "") {
if($prev) $sql .= " AND ";
$sql .= " nachname LIKE :nachname";
$prev = true;
}
if($_POST['strasse'] != "") {
if($prev) $sql .= " AND ";
$sql .= " strasse LIKE :strasse";
$prev = true;
}
// usw. für alle Felder
// statement for counting rows
$sqlcount = str_replace("vorname,nachname,strasse,plz,ort,firma,web,mail", "COUNT(*)", $sql);
// prepare count statement
$queryc = $dbh->prepare($sqlcount);
if($_POST['vorname'] != "") $queryc->bindValue(':vorname', "%".$_POST['vorname']."%");
if($_POST['nachname'] != "") $queryc->bindValue(':nachname', "%".$_POST['nachname']."%");
if($_POST['strasse'] != "") $queryc->bindValue(':strasse', "%".$_POST['strasse']."%");
if($_POST['plz'] != "") $queryc->bindValue(':plz', $_POST['plz']."%");
if($_POST['ort'] != "") $queryc->bindValue(':ort', "%".$_POST['ort']."%");
if($_POST['firma'] != "") $queryc->bindValue(':firma',"%".$_POST['firma']."%");
$queryc->setFetchMode(PDO::FETCH_ASSOC);
// save number of returned results
$queryc->execute();
$count = $queryc->fetchColumn();
echo "<b>Treffer:</b> " . $count. "<br /><br />\n";
if($count > 0) {
// prepare complete statement
$query = $dbh->prepare($sql);
// debug options
echo "<b>SQL:</b> "; var_dump($sql); echo "<br /><br />\n";
echo "<b>Query:</b> "; var_dump($query); echo "<br /><br />\n";
echo "<b>POST:</b> "; var_dump($_POST); echo "<br /><br />\n";
// hier dann wieder die bindValues von oben, nur halt mit $query statt $queryc
?>
Output:
Treffer: 1
SQL: string(100) "SELECT vorname,nachname,strasse,plz,ort,firma,web,mail FROM fachkraefte WHERE vorname LIKE :vorname"
Query: bool(false)
Hat jemand ne Idee dazu, warum $query nicht funktioniert? Ich hab keine mehr.