Avatar billede tvilling53 Seniormester
12. juni 2015 - 14:20 Der er 5 kommentarer og
1 løsning

Søgestreng til mysqli

Hej eksperter
Jeg har denne søgestreng:

if(!($stmt=$mysqli->prepare('SELECT * FROM  '.$data2.' WHERE dato >= '.$fra.'')))
den henter de poster som er forventet men jeg skal bruge en parameter mere så redigere søgestrengen til:

if(!($stmt=$mysqli->prepare('SELECT * FROM  '.$data2.' WHERE dato >= '.$fra.' && tekst == '.$str.'')))
Dette udløser en fejl som er:
Prepare failed:(1064)You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '== Strøm' at line 1
Fatal error: Call to a member function execute() on a non-object in C:\xampp\htdocs\PhpProject1\budget\slet_fra_dato.php on line 19.

Der er prøvet alt det jeg kan komme på men ikke det rigtige, så er der nogen der vil fortælle mig hvad der er galt med syntaksen.

Thomas V
Avatar billede michael_stim Ekspert
12. juni 2015 - 15:05 #1
Du skal kun have et = i en sql.
Avatar billede tvilling53 Seniormester
12. juni 2015 - 15:25 #2
Hej
At fjerne det ene lighedstegn så der står  && tekst = '.$str.'  giver denne fejl:

Prepare failed:(1054)Unknown column 'Strøm' in 'where clause nok fordi at ved kun at bruge et lighedstegn prøver at lægge værdien over i tekst.

Thomas V
Avatar billede michael_stim Ekspert
12. juni 2015 - 16:05 #3
Det er ikke en god ide at bruge specialtegn til at navngive databaser, tabeller osv.

if(!($stmt=$mysqli->prepare('SELECT * FROM  `'.$data2.'` WHERE dato >= "'.$fra.'" AND tekst = "'.$str.'"')))

Läg märke til de små "fnutter" för og efter $data2.

Hvis du pröver at echo'e din SQL för du eksekverer den, opdager du mange gange fejlen selv.
Avatar billede tvilling53 Seniormester
12. juni 2015 - 16:34 #4
Hej
Prepare faliled (1054)er fejlen som er echo-et
De små 'fnutter' skal ikke være der d et giver stadig en fejl. det som jeg ikke havde er de "" rundt om '.$fra.' og '.$str.'.

Så den helt rigtige linie ser sådan ud, det er i hvert fald den der virker 

('SELECT * FROM  '.$data2.' WHERE dato >= "'.$fra.'" AND tekst = "'.$str.'"')

Tak for hjælpen, smid et svar og du får dine point.

Thomas V
Avatar billede michael_stim Ekspert
12. juni 2015 - 16:39 #5
De små "fnutter" gör at du kan bruge reserverede ord og "forbudte" tegn i dine tabel- og feltnavne. Kan ske at jeg vendte dem forkert ´ istedet for `

Samler ikke på point, ellers tak. Läg selv et svar og accepter dit eget svar så spörgsmålet lukkes.
Avatar billede tvilling53 Seniormester
12. juni 2015 - 16:49 #6
Hej
Vi fik det til at virke og det er det der tæller og igen tak for hjælpen
Thomas V
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
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

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