Autor | Zpráva | ||
---|---|---|---|
Exkalibr Profil * |
#1 · Zasláno: 23. 2. 2020, 10:25:32
Mám takovýto kód:
$message = forum_linebreaks(forum_trim($_POST['req_message'])); $messageMaxLen = 11; $query = array( 'SELECT' => 'p.id', 'FROM' => 'posts AS p', 'ORDER BY' => 'p.posted DESC', 'LIMIT' => 5, 'WHERE' => "p.poster_id=$uid AND ($now - p.posted)<301 AND left( p.message, $messageMaxLen)='".substr($message,0,$messageMaxLen)."' s" ); $result = $forum_db->query_build($query) or error(__FILE__, __LINE__); $results = $forum_db->fetch_assoc($result); Volám před vložením příspěvku do fora. Cílem je zjistit, jestli uživatel do tabulky posts neodeslal podobný příspěvek během posledních pěti minut. Ořezávám proměnnou se vzkazem na 11 znaků. Testovací string: Testujeme nějakej zajímavej řetězec Na 11 znaku je znak: "ě" a ten mysql nevidí jako shodu. Ale pokud zmenším porovnávací rozsah na 10 $messageMaxLen = 10; tak to projde a vrátí jeden výsledek. V PhpMyAdminovi jsem to zkoušel s 20 znaky a neprošlo: SELECT p.id FROM posts AS p WHERE p.poster_id =7 AND ( 1582446884 - p.posted ) <301 AND left( p.message, 20 ) = 'Testujeme nÄ›jakej z' ORDER BY p.posted DESC LIMIT 5 |
||
Kajman Profil |
#2 · Zasláno: 23. 2. 2020, 10:30:36
mb_substr() |
||
Exkalibr Profil * |
#3 · Zasláno: 23. 2. 2020, 10:33:08
Děkuji moc, to byla ale rychlá reakce!
|
||
Časová prodleva: 4 roky
|
0