Avatar billede htx98i17 Professor
06. juli 2017 - 21:11 Der er 5 kommentarer og
1 løsning

prepared statement med LIKE %?%

Jeg kan ikke bruge


prepare("SELECT id FROM tabel WHERE navn LIKE ' %?%' ")


Skal man escape noget eller hvad gør man?
Avatar billede htx98i17 Professor
06. juli 2017 - 21:13 #1
Warning: mysqli_stmt::bind_param() [mysqli-stmt.bind-param]: Number of variables doesn't match number of parameters in prepared statement

Men det stemmer nu fint nok overens.
Avatar billede arne_v Ekspert
06. juli 2017 - 21:24 #2
"SELECT id FROM tabel WHERE navn LIKE ?"

og bind:

'%' . $dinvar . '%'
Avatar billede olsensweb.dk Ekspert
06. juli 2017 - 21:32 #3
uddybning af arne_v's svar
ref https://stackoverflow.com/questions/28385145/correct-way-to-use-like-var-with-prepared-statements-mysqli
$likeVar = "%" . $yourParam . "%";
$stmt = $mysqli->prepare("SELECT * FROM REGISTRY where name LIKE ?");
$stmt->bind_param("s", $likeVar);
$stmt->execute();
Avatar billede olsensweb.dk Ekspert
06. juli 2017 - 21:34 #4
@arne_v
jeg mener også du har lavet en her på siden med concat, som muligvis kunne være et alternativ
Avatar billede arne_v Ekspert
06. juli 2017 - 21:37 #5
Et noget klodset alternativ er:

"SELECT id FROM tabel WHERE navn LIKE CONCAT('%',?,'%')"

og bind:

$dinvar

Men jeg synes at den kode er grimmere.

*OG* i nogle tilfaelde vil det kunne give markant ringere performance.
Avatar billede htx98i17 Professor
06. juli 2017 - 21:37 #6
Er der noget I IKKE ved?

tusind tak for deltagelsen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester