Olen käyttänyt haussa tapaa
$sql = "SELECT * FROM toimittaja WHERE name LIKE '%$_POST[name]%'";
ja toimii fiksusti.
Miten teen saman PDO:lla??
Mihin ja miten sijoitan tuon lomakkeelta tulevan $_POST[name]
Ei testattu:
$sql = "SELECT * FROM toimittaja WHERE name LIKE ?"; $kysely = $yhteys->prepare($sql); kysely->execute(array($_POST[name]);
Tämä torjuu myös sql-injektion, jota sinun koodisi (tuon perusteella) ei tee. Olisit voinut myös vilkaista Putkan oppaisiin, siellä tämä tieto olisi ollut suoraan.
Edellinen ei toimine ihan suoraan koska tuosta puuttuu yksi sulku kiinni.
On myös asiallista käyttää assosiatiivisen taulukon alkioiden kanssa heitto/lainausmerkkejä. Vaikka ylläoleva koodi toimiikin käytännössä, niin PHP törmää ensin määrittelemättömään defineen name, ja arvaa sitten sen jälkeen että tuo voisi tarkoittaa indeksiä "name".
Jos PHP:ssä on kaikki varoitukset päällä, niin tuosta pitäisi tulla herja.
Eli siis $_POST["name"] on suositeltavaa.
Lisäksi koodista puuttuvat ne %-merkit, jotka tässä varmaan ihmetystä aiheuttivatkin. PDO ei kuitenkaan puutu niihin (eikä muihinkaan wildcard-merkkeihin), vaan ne voi syöttää suoraan:
$kysely->execute(array("%{$_POST["name"]}%"));
Aihe on jo aika vanha, joten et voi enää vastata siihen.