Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: MySql Like выдает ошибку "Unknown column 'many' in 'where clause'"
 
 автор: ВысотНик   (28.09.2009 в 17:30)   письмо автору
 
 

Здравствуйте.
Помогите пожалуйста разобраться в чём причина.

Код.

include "config_84.php"; // подключений к базе данных

$query = 'SELECT content, date_s' .
        ' FROM ft_news24' .
        ' WHERE content' .
        ' LIKE 1';

echo "<b>Запрос 1:  $query</b></br>";

 $result = mysql_query($query);

echo "<pre>";
while ($outResult = mysql_fetch_assoc($result)) {
         print_r($outResult);
    }
echo "</pre>";

echo mysql_error();

$varsearch = "%many%";

$query = 'SELECT content, date_s' .
        ' FROM ft_news24' .
        ' WHERE content' .
        ' LIKE ' . $varsearch;

echo "<b>Запрос 2:  $query</b></br>";

$result = mysql_query($query);

echo mysql_error();
echo "<pre>"; 
while ($outResult = mysql_fetch_assoc($result)) {
        print_r($outResult); 
    }
echo "</pre>";
?>


Запрос 1 выводит:


Array
(
    [content] => 1
    [date_s] => 
)
Array
(
    [content] => 1
    [date_s] => 
)



Запрос 2 выводит:


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 '%many%' at line 1


Если убрать % в $varsearch , выводит:

Unknown column 'many' in 'where clause'

Где надо подкрутить что бы осуществлялся поиск по столбцу?

---------
В столбце сontent таблицы ft_news24 текст many есть.

  Ответить  
 
 автор: cheops   (28.09.2009 в 17:38)   письмо автору
 
   для: ВысотНик   (28.09.2009 в 17:30)
 

Если не сложно, выведите запрос $query в окно браузера - как он выглядит?

  Ответить  
 
 автор: ВысотНик   (28.09.2009 в 17:41)   письмо автору
 
   для: cheops   (28.09.2009 в 17:38)
 

Запрос 1: SELECT content, date_s FROM ft_news24 WHERE content LIKE 1

Запрос 2.1 : SELECT content, date_s FROM ft_news24 WHERE content LIKE %many%
Запрос 2.2 (без %) : SELECT content, date_s FROM ft_news24 WHERE content LIKE many

  Ответить  
 
 автор: Trianon   (28.09.2009 в 17:45)   письмо автору
 
   для: ВысотНик   (28.09.2009 в 17:41)
 

И что , по Вашему, означают LIKE %many% и LIKE many ?

Интересно, вот чуть рядом Вы пишете echo "</pre>"; а не echo </pre> ;
Почему, интересно...

  Ответить  
 
 автор: ВысотНик   (28.09.2009 в 17:55)   письмо автору
 
   для: Trianon   (28.09.2009 в 17:45)
 

Спасибо, что напомнили, что надо кавычки ставить.
=)

  Ответить  
 
 автор: cheops   (28.09.2009 в 17:50)   письмо автору
 
   для: ВысотНик   (28.09.2009 в 17:41)
 

Нужно заключить конструкцию в кавычки %many%
SELECT content, date_s FROM ft_news24 WHERE content LIKE '%many%'

  Ответить  
 
 автор: Trianon   (28.09.2009 в 17:53)   письмо автору
 
   для: cheops   (28.09.2009 в 17:50)
 

предварительно проэскейпив её содержимое.
И по совести рассуждая, не через mysql_escape_string, а чем-то самописным, что и проценты и подчеркивания тоже проэскейпит.

  Ответить  
 
 автор: cheops   (28.09.2009 в 17:56)   письмо автору
 
   для: Trianon   (28.09.2009 в 17:53)
 

В принципе переменная статичная и не содержит элементов, которые нужно экранировать
$varsearch = "%many%";

Но лучше, да, даже такие переменные пропускать через экранирование - это позволит избежать трудноулавливаемых ошибок в дальнейшем, когда это значение может быть изменено.

  Ответить  
 
 автор: Trianon   (28.09.2009 в 17:57)   письмо автору
 
   для: cheops   (28.09.2009 в 17:56)
 

так это она в этом примере статическая. Чтоб вопрос задать.
В боевом варианте - динамической будет.

  Ответить  
 
 автор: ВысотНик   (28.09.2009 в 18:02)   письмо автору
 
   для: Trianon   (28.09.2009 в 17:57)
 

Это тренировочный скрипт.
Без дальнейшего развития.
Смотрю, как работает.

В рабочих условиях всё экранируется и проверяю.
Но за совет «самописным», спасибо.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования