Перейти к содержанию
Официальный форум поддержки Simpla

Рекомендуемые сообщения

В Симпле запросы к БД формируются функцией 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 (ноль) в базе.

Не пойму, как передать значение без кавычек.

Изменено пользователем question
Ссылка на сообщение
Поделиться на другие сайты


$variant->stock=null;
$query = $this->db->placehold("UPDATE __variants SET ?% WHERE id=? LIMIT 1", $variant, intval($id));

 

Изменено пользователем phukortsin
Ссылка на сообщение
Поделиться на другие сайты
echo $this->db->placehold("?%", $variant);
 

 

выведет 

 

stock='9'
 

 

Мне же нужно без кавычек в случае, если числа нет, или значение пустое.

Ссылка на сообщение
Поделиться на другие сайты
							if($variant->stock == '∞' || $variant->stock == '')
								$variant->stock = null;

Вот это отлично работает

А $variant->infinity не имеет отношения к базе и ничего не передает

Ссылка на сообщение
Поделиться на другие сайты

Помогла такая конструкция

 

        foreach($variant as &$v){
            if($v == '∞' || $v == '')
                $v = null;
        }
 

 

Изменено пользователем question
Ссылка на сообщение
Поделиться на другие сайты

 

							if($variant->stock == '∞' || $variant->stock == '')
								$variant->stock = null;

Понятия не имею, почему ваш код не работает. Мой сработал, когда я подставил амперсант (&$v)

Ссылка на сообщение
Поделиться на другие сайты

Все прекрасно работает.
Вставляю код в корневой 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

Скорее всего, Вы сами наворочали уже много чего...

Изменено пользователем phukortsin
Ссылка на сообщение
Поделиться на другие сайты

Все прекрасно работает.

Вставляю код в корневой 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

Скорее всего, Вы сами наворочали уже много чего...

 

 

У него новая своя админка.

 

Корс с каких пор ты занимаешься благотворительностью?

Ссылка на сообщение
Поделиться на другие сайты

Там не своя админка, а разные версии. Какая у меня, не знаю, но точно не из самых последних.

Да и разница в вашем примере и моём по сути минимальная.

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...