søg muligheder på hjemmeside

Tags:    php mysqli

Hej

Det er sådan at jeg arbejder lige pt med php og mysqli til at lave en søge mulighed på hjemmesiden.

Det er sådan at der kommer intet indhold frem på siden.

Ingen fejl eller tilsvarende.

Fold kodeboks ind/udPHP kode 


Fold kodeboks ind/udHTML kode 


Jeg er næsten 100% på at fejlen ligger i "sql"

Jeg har også prøvet at gøre sådan her:

Fold kodeboks ind/udPHP kode 



Håber du kan være med til at jeg løser fejlen.



9 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 2 karma
Sorter efter stemmer Sorter efter dato
En god ide jeg altid selv bruger når jeg skal lave en SQL er at jeg laver den i phpmyadmin først. Så kan jeg se om jeg får det ønskede resultat. Når den så er der så kan man gå i gang i sit script med at skabe dem. På den måde kan du udskrive din sql fra dit script og sammenligne den med den SQL fra phpmyadmin og er de ens så skal du også få et resultat :D




Du hardcoder dine variabler direkte ind i dit prepare-statement. Af samme årsag kører dit kodestykke inde i dit if-statement ikke. Jeg forstår dog ikke, hvorfor du ikke får en fejlkode. Hverken fra MySQLi eller fra dit eget script. Prøv at skifte dit nuværende setup ud med et try-catch setop - og få rettet din fejl i dit prepare-statement.

Tag en kigger på følgende:

Fold kodeboks ind/udPHP kode 


Det er ikke testet. I dit prepare-statement kan du gøre følgende, såfremt ovenstående ikke virker:

LIKE CONCAT('%', ? '%')
Samt erstatte dine paramtre med blot $_POST['sogeord'].

vh,



Indlæg senest redigeret d. 27.01.2014 22:59 af Bruger #16122
En god ide jeg altid selv bruger når jeg skal lave en SQL er at jeg laver den i phpmyadmin først. Så kan jeg se om jeg får det ønskede resultat. Når den så er der så kan man gå i gang i sit script med at skabe dem. På den måde kan du udskrive din sql fra dit script og sammenligne den med den SQL fra phpmyadmin og er de ens så skal du også få et resultat :D


Hvordan tænker du sådan helt at jeg skulle gør det??

Tænker du sådan her?
Fold kodeboks ind/udSQL kode 


Det virker fint :)



Indlæg senest redigeret d. 27.01.2014 23:41 af Bruger #17136
Hvordan tænker du sådan helt at jeg skulle gør det??

Tænker du sådan her?
Fold kodeboks ind/udSQL kode 


Det virker fint :)


Den er jo heller ikke magen til det i din sourcekode som du har vist. Og det virker fint, selvom du ikke har % i din LIKE? Jeg var ellers sikker på at man skulle bruge %.

Udskriv din $stmt for at se hvordan det ser ud og så prøv at køre den i phpmyadmin.



Hvordan tænker du sådan helt at jeg skulle gør det??

Tænker du sådan her?
Fold kodeboks ind/udSQL kode 


Det virker fint :)


Den er jo heller ikke magen til det i din sourcekode som du har vist. Og det virker fint, selvom du ikke har % i din LIKE? Jeg var ellers sikker på at man skulle bruge %.

Udskriv din $stmt for at se hvordan det ser ud og så prøv at køre den i phpmyadmin.


Jeg har lige prøvet sådan her:

Fold kodeboks ind/udSQL kode 


Er det sådan her du tænker Brian (den rigtige)?

den kommer frem og siger her: "Denne tabel indeholder ikke en unik kolonne. Redigering af gitter, afkrydsningsfelt, redigering og sletning er ikke tilgængelige."

samtidig viser den også sådan her: Viser rækkerne 0 - 0 (1 i alt, forepørgsel tog 0.0006 sek)


Din kode virker ikke:
Du hardcoder dine variabler direkte ind i dit prepare-statement. Af samme årsag kører dit kodestykke inde i dit if-statement ikke. Jeg forstår dog ikke, hvorfor du ikke får en fejlkode. Hverken fra MySQLi eller fra dit eget script. Prøv at skifte dit nuværende setup ud med et try-catch setop - og få rettet din fejl i dit prepare-statement.

Tag en kigger på følgende:

Fold kodeboks ind/udPHP kode 


Det er ikke testet. I dit prepare-statement kan du gøre følgende, såfremt ovenstående ikke virker:

LIKE CONCAT('%', ? '%')
Samt erstatte dine paramtre med blot $_POST['sogeord'].

vh,








Indlæg senest redigeret d. 28.01.2014 10:01 af Bruger #17136
Jeg har lige prøvet sådan her:

Fold kodeboks ind/udSQL kode 


Er det sådan her du tænker Brian (den rigtige)?

samtidig viser den også sådan her: Viser rækkerne 0 - 0 (1 i alt, forepørgsel tog 0.0006 sek)


Det betyder at den ikke har fundet nogle. Står det 100% som nordsjælland i tabellen? Altså 100% som i at det er småbogstaver det hele?



Jeg har lige prøvet sådan her:

Fold kodeboks ind/udSQL kode 


Er det sådan her du tænker Brian (den rigtige)?

samtidig viser den også sådan her: Viser rækkerne 0 - 0 (1 i alt, forepørgsel tog 0.0006 sek)


Det betyder at den ikke har fundet nogle. Står det 100% som nordsjælland i tabellen? Altså 100% som i at det er småbogstaver det hele?


Det står sådan her i databasen:

Fold kodeboks ind/udSQL kode 




Lav denne først:

Fold kodeboks ind/udSQL kode 


Kommer der noget der? hvis ja, så sæt én where betingelse på ad gangen og se hvor det går galt.



Lav denne først:

Fold kodeboks ind/udSQL kode 


Kommer der noget der? hvis ja, så sæt én where betingelse på ad gangen og se hvor det går galt.


Fejlen kommer når jeg laver

Fold kodeboks ind/udSQL kode 


Jeg forstår det ikke helt,

jeg har kigget her: http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php/60496#60496

http://www.w3schools.com/sql/sql_like.asp


Skulle bare gør sådan her:

Fold kodeboks ind/udPHP kode 



Har prøvet sådan her::

Fold kodeboks ind/udSQL kode 


Få fejlen: Der opstod en fejl i erklæringen: 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 '. $navn . "%", OR `omrade` LIKE "%" . $omrade . "%", OR `sogord` LIKE "%" . $sog' at line 1



Indlæg senest redigeret d. 28.01.2014 15:16 af Bruger #17136
t