Suche mit mehreren Suchfeldern

Kann das sein dass XAMPP irgendiwe bockmist macht mit unter??? gestern funktionierte es einwandfrei und heut funktioniert irgendwie nur ein Suchfeld......es ist egal was für ein Preis ich eingebe er zeigt mir alle Bücher von den gezeigten Autoren an.......ach wenn die weit über den eingegebenen Preis sind...
 
Folgendes hab mein Fehler gemerkt...aber wikrlich funktionieren tuts trotzdem nicht......hab ich was übersehen??

hier der abgeänderte Teil:

PHP:
$search[var1]=$_POST['zimmer'];
$search[var2]=$_POST['groesse'];
$search[var3]=$_POST['preis'];
$search[var4]=$_POST['ort'];
$query = $pdo->prepare("select * from wohnung_mieten where zimmer LIKE '%$search[var1]%' OR groesse LIKE '%$search[var2]%' OR preis LIKE '%$search[var3]%' OR ort LIKE '%$search[var4]%'  LIMIT 0 , 10");
$query->bindValue( ':zimmer', "%$search[var1]%", PDO::PARAM_INT);
$query->bindValue( ':groesse', "%$search[var2]%", PDO::PARAM_INT);
$query->bindValue( ':preis', "%$search[var3]%", PDO::PARAM_STR);
$query->bindValue( ':ort', "%$search[var4]%", PDO::PARAM_STR);
$query->execute();


gut das mit den * hab ich jetzt noch nicht geändert ;-)
 
a) Schalt die Fehlerausgabe ein

b) $search[var1] => $search['var1']

c) $search ist (noch) kein Array, daher geht generell kein []

d) Noch immer Injections...
Code:
where zimmer LIKE '%$search[var1]%'
=>
where zimmer LIKE :param1

$query->bindValue( ':zimmer', "%$search[var1]%", PDO::PARAM_INT);
=>
$query->bindValue( ':param1', '%' . $search['var1'] . '%', PDO::PARAM_INT);

e) Der Umweg über $search ist sinnlos.
 
Ja das mit den Injection hab ich jetzt auch vergessen abzuändern........

aber wenn $search in dem fall sinnlos ist....wie mach ichs dann?
 
meinst du etwa so?
PHP:
$_POST['zimmer'];
$_POST['groesse'];
$_POST['preis'];
$_POST['ort'];
$query = $pdo->prepare("select * from wohnung_mieten where zimmer LIKE :zimmer  OR groesse LIKE :groesse OR preis LIKE :preis OR ort LIKE :ort  LIMIT 0 , 10");
$query->bindValue( ':zimmer', '%$_POST['zimmer']%', PDO::PARAM_INT);
$query->bindValue( ':groesse', '%$_POST['groesse']%', PDO::PARAM_INT);
$query->bindValue( ':preis', '%$_POST['preis']%', PDO::PARAM_STR);
$query->bindValue( ':ort', '%$_POST['ort']%', PDO::PARAM_STR);
 
Außer dass die ersten 4 Zeilen auch jetzt noch komplett umsonst sind... (buchstäblich, die machen einfach gar nichts).

Ein PHP-Buch wäre vermutlich hilfreich.
 
das sieht jetzt so bei mir aus

PHP:
$query = $pdo->prepare("select * from wohnung_mieten where zimmer LIKE :zimmer  OR groesse LIKE :groesse OR preis LIKE :preis OR ort LIKE :ort  LIMIT 0 , 10");
$query->bindValue( "%$_POST[zimmer]%", PDO::PARAM_INT);
$query->bindValue( "%$_POST[groesse]%", PDO::PARAM_INT);
$query->bindValue( "%$_POST[preis]%", PDO::PARAM_STR);
$query->bindValue( "%$_POST[ort]%", PDO::PARAM_STR);

$query->execute();

nu krieg ich die fehlermeldung


Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens' in C:\xampp\htdocs\broschueren_test\php\suche.php:97 Stack trace: #0 C:\xampp\htdocs\broschueren_test\php\suche.php(97): PDOStatement->execute() #1 {main} thrown in C:\xampp\htdocs\broschueren_test\php\suche.php on line 97

in dem fall die letzte zeile von den code ausschnitt jetzt......

das verstehe ich nicht ..... da die zeile doch nur dafür sorgt das die querries ausgeführt werden oder nicht??

In einem Buch hab ich schon halbwegs mich reingelesen.....nur verstanden hab ich auf die schelle jetzt wenig......so langsam kapituliere ich auch....
 
$_POST[zimmer] => $_POST['zimmer'] :rolleyes:
Strings sind wirklich nicht das Selbe wie Konstanten.
Und nur weil es "manchmal" funktioniert heißt das nicht, dass es immer so ist.

Zur Fehlermeldung: Deinen ganzen bindValues fehlt jeweils der erste Parameter (im letzten Post waren die noch da)
 
wenn ich $_POST['zimmer'] schreibe bekomme ich folgende Meldung:

Parse error: syntax error, unexpected 'zimmer' (T_STRING) in C:\xampp\htdocs\broschueren_test\php\suche.php on line 88

Die Parameter sind noch da ;) hab die vorhin verkehrterweise rausgenommen
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück