Autor | Zpráva | ||
---|---|---|---|
Jakub2121 Profil * |
#1 · Zasláno: 1. 11. 2021, 21:44:49
Dobrý večer, mám zajímavý problém. Když v aplikaci phpLiteAdmin zadám příkaz
SELECT title,description,created,hashtag FROM snaps WHERE hashtag LIKE '%test s%' OR title LIKE '%test s%' LIMIT 30 Pokud udělám query v php, daný řádek to najde. $q = $db->query("SELECT title,description,created,hashtag FROM snaps WHERE hashtag LIKE '%$str%' OR title LIKE '%$str%' LIMIT 30"); Vlastně mi query v php přestane fungovat vždy, když přidám mezeru... může to být něco s charsetem? Děkuji |
||
blaaablaaa Profil |
#2 · Zasláno: 2. 11. 2021, 07:36:30
Jakub2121:
Doporučuji si dotaz, který je v php vypsat, asi do $str nejde to, co si myslíš. Taky pozor na to, že pokud není $str nijak ošetřeno, je dotaz náchylný k sql injection. |
||
Kajman Profil |
#3 · Zasláno: 2. 11. 2021, 08:52:05
Nejlépe si zkontrolovat i byty, jestli v
$str např. není nedělitelná mezera místo normální.
bin2hex($str) |
||
Jakub2121 Profil * |
blaaablaaa:
Pokud dám místo $q = $db... echo, tak to vypíše query správně, tedy SELECT title,description,created,hashtag FROM snaps WHERE hashtag LIKE '%test s%' OR title LIKE '%test s%' LIMIT 30 $str = SQLite3::escapeString($_POST["str"]);
Kajman: bin2hex vyhodí (die(bin2hex($str));) 746573742073 Každopádně (die(bin2hex("test s"));) dá totéž. 746573742073 ještě dodám, že data do $str posílám pomocí jquery $.postu. |
||
Kajman Profil |
#5 · Zasláno: 2. 11. 2021, 12:02:08
Vypadá to v pořádku. Dělá to i na jiném serveru (např. jiná verze php)?
|
||
Jakub2121 Profil * |
#6 · Zasláno: 2. 11. 2021, 13:01:22
Kajman:
To bohužel teď nemohu ověřit. Teď jsem zjistil, že když přidám ,,title s mezerou" přímo přes phpLiteAdmin, tak mi ho skript v pořádku nalezne. Pokud si vytáhnu problémový záznam napřímo přes query ID=xxx a vložím výsledek to hex2bin, vyhodí to echo $r["title"]; // title s mezerou die(hex2bin($r["title"])); hex2bin(): Hexadecimal input string must have an even length Nemůže být nějaký problém při přidávání záznamu do db? Řeším to stejně jako nahoře -> přijmu přes POST data, ošetřím je a vložím do DB... |
||
Keeehi Profil |
#7 · Zasláno: 3. 11. 2021, 00:39:18
Jakub2121:
„ die(hex2bin($r["title"])); “
Máš to opačně. Má to být bin2hex. „Nemůže být nějaký problém při přidávání záznamu do db?“ Může. Ale to se nejspíše dozvíme když nám sem dáš výsledek té bin2hex funkce. |
||
Časová prodleva: 2 roky
|
0