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

Форум MySQL

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

 

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

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

тема: Помогите найти косяк в SQL запросе
 
 автор: ~TB~   (24.04.2011 в 12:09)   письмо автору
 
 

Проблема в запросе к БД MySQL:
При вызове хранимой процедуры, в таблицу добавляются данные. Так вот, при добавлении данных в таблицу, в varchar(255) поле вводятся тока цифры. На другие символы ругается что неправильный синтаксис (Unknown column "тут текст" in "fieldlist").

Собственно сам запрос:
CREATE PROCEDURE `addmessage`(IN var_table VARCHAR(50), IN var_user INT(10), IN var_text VARCHAR(255))
BEGIN
SET @query := CONCAT("SELECT COUNT(*) FROM ", var_table, " INTO @var_count");
PREPARE query FROM @query;
EXECUTE query;
DEALLOCATE PREPARE query;
  IF @var_count >= 10 THEN
  BEGIN
    SET @query := CONCAT("SELECT MIN(m_id) FROM ", var_table, " INTO @min");
    PREPARE query FROM @query;
    EXECUTE query;
    DEALLOCATE PREPARE query;
    SET @query := CONCAT("DELETE FROM ", var_table, " WHERE m_id = @min");
    PREPARE query FROM @query;
    EXECUTE query;
    DEALLOCATE PREPARE query;
  END;
  END IF;
SET @query := CONCAT("INSERT INTO ", var_table, "(m_user, m_date, m_text) VALUES (", var_user, ", NOW(), ", var_text, ")");  
PREPARE query FROM @query;
EXECUTE query;
DEALLOCATE PREPARE query;
END

Проблемное поле - m_text, вводится туда var_text. Тип у обох varchar(255).

Помогите. Хз где косяк.

  Ответить  
 
 автор: cheops   (24.04.2011 в 12:35)   письмо автору
 
   для: ~TB~   (24.04.2011 в 12:09)
 

Нужно поместить строковые данные в кавычки, т.е. вместо
SET @query := CONCAT("INSERT INTO ", var_table, "(m_user, m_date, m_text) VALUES (", var_user, ", NOW(), ", var_text, ")");
писать
SET @query := CONCAT("INSERT INTO ", var_table, "(m_user, m_date, m_text) VALUES (", var_user, ", NOW(), '", var_text, "')");

  Ответить  
 
 автор: ~TB~   (24.04.2011 в 12:39)   письмо автору
 
   для: cheops   (24.04.2011 в 12:35)
 

Огромное спасибо. Прекрасно помогло!

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

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