Ошибка MySQL

Автор sus, 28 октября 2015, 11:59:36

« назад - далее »

sus

Всем добрый день.
Открыто поле в базе, имя info тип  символьный VARCHAR 200  в базе таблицы  cart_product
При изменении уже существующей записи в базе по данному скрипту
Db::getInstance()->execute('
UPDATE `'._DB_PREFIX_.'cart_product`
SET `quantity` = `quantity` '.$qty.', ` info ` = '.$infoSUS.',  `date_add` = NOW()
WHERE `id_product` = '.(int)$id_product.
(!empty($id_product_attribute) ? ' AND `id_product_attribute` = '.(int)$id_product_attribute : '').'
AND `id_cart` = '.(int)$this->id.(Configuration::get('PS_ALLOW_MULTISHIPPING') && $this->isMultiAddressDelivery() ? ' AND `id_address_delivery` = '.(int)$id_address_delivery : '').'
LIMIT 1'
);

Если строковая переменная  $infoSUS содержит только цифры то все проходит нормально.
Если содержит только текст, то, выдает ошибку
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 'текст, `date_add` = NOW() WHERE `id_product` = 24 AND `id_product_at' at line 2

UPDATE `ps_cart_product`
SET `quantity` = `quantity` + 1,` info` = Мой текст, `date_add` = NOW()
WHERE `id_product` = 24 AND `id_product_attribute` = 2463
AND `id_cart` = 301
LIMIT 1

Почему требует проверить право MySQL сервера для использования текста?
Как это исправить?
Спасибо!!

coder

Тект должен быть в кавычках
info = "Мой текст"

sus

Спасибо! Пробую..

sus

Спасибо еще раз! Все пошло.
Но вот еще один момент.
В этом же скрипте в строке
SET `quantity` = `quantity` '.$qty.', ` info ` = '.$infoSUS.',  `date_add` = NOW()
При записи к количеству уже записанного прибавляется текущее
`quantity` = `quantity` '.$qty.'
А как сделать чтобы к тексту уже записанного прибавлялся текущий, так не работает
SET `quantity` = `quantity` '.$qty.', ` info ` = `info`'.$infoSUS.',  `date_add` = NOW()
Спасибо!

Миколас

Чтобы добавлять текст его нужно сначала получить, потом в php склеить и заново сохранить. SQL запросом нельзя склеить текст.

sus

Спасибо всем!!
Вопрос закрыт.