question Опубликовано 6 февраля, 2019 Жалоба Поделиться Опубликовано 6 февраля, 2019 (изменено) В Симпле запросы к БД формируются функцией placehold в виде $query = $this->db->placehold("UPDATE __variants SET ?% WHERE id=? LIMIT 1", $variant, intval($id)); Если $variant содержит название поля и число, запрос выполняется правильный UPDATE s_variants SET stock=10000 WHERE id=999 LIMIT 1 Но если содержит название поля и null вместо числа, в бд передаётся 'null' в кавычках, которое затем превращается в 0 (ноль) в базе.Не пойму, как передать значение без кавычек. Изменено 6 февраля, 2019 пользователем question Цитата Ссылка на сообщение Поделиться на другие сайты
phukortsin Опубликовано 6 февраля, 2019 Жалоба Поделиться Опубликовано 6 февраля, 2019 (изменено) $variant->stock=null; $query = $this->db->placehold("UPDATE __variants SET ?% WHERE id=? LIMIT 1", $variant, intval($id)); Изменено 6 февраля, 2019 пользователем phukortsin Цитата Ссылка на сообщение Поделиться на другие сайты
question Опубликовано 6 февраля, 2019 Автор Жалоба Поделиться Опубликовано 6 февраля, 2019 $variant->stock=null; Не работает. Цитата Ссылка на сообщение Поделиться на другие сайты
phukortsin Опубликовано 6 февраля, 2019 Жалоба Поделиться Опубликовано 6 февраля, 2019 Работает.Поправил ошибку во второй строчке... Цитата Ссылка на сообщение Поделиться на другие сайты
question Опубликовано 6 февраля, 2019 Автор Жалоба Поделиться Опубликовано 6 февраля, 2019 Во второй строчке была опечатка, это я сразу заметил, но $variant->stock=null; не работает. Цитата Ссылка на сообщение Поделиться на другие сайты
question Опубликовано 6 февраля, 2019 Автор Жалоба Поделиться Опубликовано 6 февраля, 2019 echo $this->db->placehold("?%", $variant); выведет stock='9' Мне же нужно без кавычек в случае, если числа нет, или значение пустое. Цитата Ссылка на сообщение Поделиться на другие сайты
question Опубликовано 6 февраля, 2019 Автор Жалоба Поделиться Опубликовано 6 февраля, 2019 Не понимаю, как сохраняется "бесконечное количество" товара через админку. Цитата Ссылка на сообщение Поделиться на другие сайты
question Опубликовано 6 февраля, 2019 Автор Жалоба Поделиться Опубликовано 6 февраля, 2019 Нашёл такую конструкцию. $variant->infinity Видимо, она и передаёт значение null в БД. Цитата Ссылка на сообщение Поделиться на другие сайты
Kosjak76 Опубликовано 6 февраля, 2019 Жалоба Поделиться Опубликовано 6 февраля, 2019 if($variant->stock == '∞' || $variant->stock == '') $variant->stock = null; Вот это отлично работаетА $variant->infinity не имеет отношения к базе и ничего не передает Цитата Ссылка на сообщение Поделиться на другие сайты
question Опубликовано 6 февраля, 2019 Автор Жалоба Поделиться Опубликовано 6 февраля, 2019 (изменено) Помогла такая конструкция foreach($variant as &$v){ if($v == '∞' || $v == '') $v = null; } Изменено 6 февраля, 2019 пользователем question Цитата Ссылка на сообщение Поделиться на другие сайты
question Опубликовано 6 февраля, 2019 Автор Жалоба Поделиться Опубликовано 6 февраля, 2019 if($variant->stock == '∞' || $variant->stock == '') $variant->stock = null; Понятия не имею, почему ваш код не работает. Мой сработал, когда я подставил амперсант (&$v) Цитата Ссылка на сообщение Поделиться на другие сайты
phukortsin Опубликовано 6 февраля, 2019 Жалоба Поделиться Опубликовано 6 февраля, 2019 (изменено) Все прекрасно работает.Вставляю код в корневой index.php в конец $variant=new stdclass(); $variant->stock=null; $id=5; $query = $view->db->placehold("UPDATE __variants SET ?% WHERE id=? LIMIT 1", $variant, intval($id)); echo $query; Получаю UPDATE s_variants SET stock=NULL WHERE id=5 LIMIT 1 Скорее всего, Вы сами наворочали уже много чего... Изменено 6 февраля, 2019 пользователем phukortsin Цитата Ссылка на сообщение Поделиться на другие сайты
shooroop Опубликовано 8 февраля, 2019 Жалоба Поделиться Опубликовано 8 февраля, 2019 Все прекрасно работает.Вставляю код в корневой index.php в конец $variant=new stdclass(); $variant->stock=null; $id=5; $query = $view->db->placehold("UPDATE __variants SET ?% WHERE id=? LIMIT 1", $variant, intval($id)); echo $query; Получаю UPDATE s_variants SET stock=NULL WHERE id=5 LIMIT 1 Скорее всего, Вы сами наворочали уже много чего... У него новая своя админка. Корс с каких пор ты занимаешься благотворительностью? Цитата Ссылка на сообщение Поделиться на другие сайты
question Опубликовано 8 февраля, 2019 Автор Жалоба Поделиться Опубликовано 8 февраля, 2019 Там не своя админка, а разные версии. Какая у меня, не знаю, но точно не из самых последних.Да и разница в вашем примере и моём по сути минимальная. Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.