PROFF89 Опубликовано 13 Мая 2008 Жалоба Поделиться Опубликовано 13 Мая 2008 (изменено) всем привет. помогите плиз, есть пара вопросов относительно поиска, смысл такой:запрос вида:$poisk = 'SELECT * FROM `News` WHERE `text` LIKE \'%'.$_POST['newsname'].'%\' LIMIT 0 , 20';при исполнении появляется ошибка: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 ' LIKE '%новости%' LIMIT 0 , 20' at line 3хотя, если сделать echo $poisk; то сгенерируемый запрос ( SELECT * FROM `News` WHERE `text` LIKE '%новости%' LIMIT 0 , 20 ) без проблем работает в phpadmin, в чем может быть ошибка? Изменено 13 Мая 2008 пользователем PROFF89 Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Song Опубликовано 13 Мая 2008 Жалоба Поделиться Опубликовано 13 Мая 2008 дело в обратном слэше. зачем оно? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
PROFF89 Опубликовано 13 Мая 2008 Автор Жалоба Поделиться Опубликовано 13 Мая 2008 Song, нет, если из LIKE \'%'.$_POST['newsname'].'%\' убрать "\", то ошибка:Parse error: parse error, unexpected T_STRING Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Song Опубликовано 13 Мая 2008 Жалоба Поделиться Опубликовано 13 Мая 2008 надо смотреть весь php код с этим запросом с убранным слешем. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
PROFF89 Опубликовано 13 Мая 2008 Автор Жалоба Поделиться Опубликовано 13 Мая 2008 switch($_GET['page']) { default: echo "<form action=\"poisk.php?page=poisk&ok=1\" method=\"post\">\n". "<input type=\"text\" name=\"newsname\" value=\"".$_POST['newsname']."\">". "<br/><input type=\"submit\" value=\" Editor \" name=\"ok\" /></form>\n"; break; case 'poisk': $poisk = 'SELECT * FROM `News` WHERE `text` LIKE \'%'.$_POST['newsname'].'%\' LIMIT 0 , 20'; echo $poisk; $result22 = mysql_query($poisk) or die(mysql_error()); /* Выводим результаты в html */ print "<table>\n"; while ($line = mysql_fetch_array($result22, MYSQL_ASSOC)) { print "\t<tr>\n"; foreach ($line as $col_value) { print "\t\t<td>$col_value</td>\n"; } print "\t</tr>\n"; } print "</table>\n"; break; /* Освобождаем память от результата */ mysql_free_result($result22); /* Закрываем соединение */ mysql_close($link); } ?>впринипи все правильно, и запрос генерируется правильно, и phpadmin его примимает... Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Sannis Опубликовано 13 Мая 2008 Жалоба Поделиться Опубликовано 13 Мая 2008 Мне кажется сейчас Song будет ругаться, и есть за что. Правда вопроса это не касается, но почему /* Освобождаем память от результата */ mysql_free_result($result22); /* Закрываем соединение */ mysql_close($link);именно в этом месте, а? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Song Опубликовано 14 Мая 2008 Жалоба Поделиться Опубликовано 14 Мая 2008 И что если ты изменишь вот так:$poisk = "SELECT * FROM `News` WHERE `text` LIKE '%".$_POST['newsname']."%' LIMIT 0 , 20";то оно типа не работает? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
PROFF89 Опубликовано 14 Мая 2008 Автор Жалоба Поделиться Опубликовано 14 Мая 2008 Song, блин, спасибо! я уж все варианты перепробывал... Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Song Опубликовано 14 Мая 2008 Жалоба Поделиться Опубликовано 14 Мая 2008 По-моему самый очевидный вариант. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.