[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Не получается записать NULL
Фибер Оптик
Здравствуйте!

При добавлении записи в mysql не получается в столбец записать значение NULL.

Есть переменная:

$saler = (empty(trim($_POST['saler']))) ? NULL : trim($_POST['saler']);


Есть запрос:

$query = "INSERT INTO table (saler) VALUES ('$saler')";


Есть таблица:


CREATE TABLE `table` (
`saler` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


В базу летит пустая строка, NULL не записывается.
Что я не так делаю?
depp
а если так:
$saler = (empty(trim($_POST['saler']))) ? 'NULL' : trim($_POST['saler']);
Фибер Оптик
При такой записи в базу полетит именно строка NULL, а не значение NULL.
Я это проходил.
Valick
$saler = (empty(trim($_POST['saler']))) ? "'NULL'" : "'".trim($_POST['saler'])."'";
$query = "INSERT INTO table (saler) VALUES (".$saler.")";



И проверяйте сам запрос после сборки

echo $query;


_____________
Стимулятор ~yoomoney - 41001303250491
Фибер Оптик
а как быть, если в запросе добавляется несколько переменных?


$query = "INSERT INTO table (date_sale, saler, contact_info) VALUES ('$mysqldate', ".$saler.", '$contact_info')";

При этом если в $saler будет NULL, то в в запрос полит вот это:


INSERT INTO table (date_sale, saler, contact_info) VALUES ('2018-06-18', ,'контакты')

Т.е будет ошибка, т.к присутствует "," между переменными.

Кстати, при такой записи:

$saler = (empty(trim($_POST['saler']))) ? "'NULL'" : "'".trim($_POST['saler'])."'";

в переменную будет записана так же строка NULL
AllesKlar
Фибер Оптик
Проблема в чем, не понимаю?
Открываешь любой клиент базы, пишешь в нем коректный запрос хоть с null, хоть с nil
Как только результатом доволен, генерируешь точно такой же запрос средствами php

Нужно в строковый тип записать null ? В чем проблема?
$foo = is_null($baz) ? "NULL" : " '" . $baz . "' ";


_____________
[продано копирайтерам]
Фибер Оптик
Цитата (AllesKlar @ 20.06.2018 - 10:57)
Нужно в строковый тип записать null ? В чем проблема?
$foo = is_null($baz) ? "NULL" : " '" . $baz . "' ";

Во, так получилось, но какой-то корявый код у меня получается.


$saler = (empty(trim($_POST['saler']))) ? NULL : trim($_POST['saler']);
$saler = is_null($saler) ? "NULL" : $_POST['saler'];


Его можно как-то оптимизировать?
Фибер Оптик
так я же могу просто написать

$saler = (empty(trim($_POST['saler']))) ? "NULL" : trim($_POST['saler']);
Valick
Цитата (Фибер Оптик @ 20.06.2018 - 13:49)
а как быть, если в запросе добавляется несколько переменных?


Знаете, что такое конкатенация? Ей очень удобно пользоваться для сборки запроса. Про квери билдеры пока молчу.

_____________
Стимулятор ~yoomoney - 41001303250491
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.