![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
|
Проблема в запросе к БД 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). Помогите. Хз где косяк. Последний раз редактировалось ~TB~, 24.04.2011 в 12:08. |
|
#2
|
||||
|
||||
|
Подсказали где проблема. Мб кому пригодится.
SET @query := CONCAT("INSERT INTO ", var_table, "(m_user, m_date, m_text) VALUES (", var_user, ", NOW(), '", var_text, "')"); Нужно было взять текст в ' апострофы '. |
|
#3
|
|||
|
|||
|
дык все текстовые поля, double и их подобные нужно брать в одинарные или двойные кавычки, зависит от того как и где используете запрос.
|
|
#4
|
|||
|
|||
|
подскажите, пожалуйста, в какие кавычки брать? у меня никак не получается ...
Код:
datamodule1.adoquery1.SQL.Add('where Nazvanie="'+CodeOblast.Text+'"'); |
|
#5
|
|||
|
|||
|
Код:
datamodule1.adoquery1.SQL.Add('where Nazvanie='''+CodeOblast.Text+'''');Все апострофы там. |
|
#6
|
|||
|
|||
|
Спасибо огромное !!!!! теперь все понятно и с кавычками
вернее с апострофами ![]() Последний раз редактировалось BlackKat, 04.05.2011 в 09:13. |