Установка значения базы данных переменной в NULL вместо пустой строки - PullRequest
1 голос
/ 11 ноября 2011

В моей базе данных SQL есть много таких полей: Тип поля: Текст Нуль: Да Значение по умолчанию: NULL

Моя вставка выглядит следующим образом:

INSERT INTO tbl (col,col,col,...) VALUES ('val','val','val',...)

Теперь эти кавычкив моем операторе INSERT значения вставляются в базу данных '' (пустая строка), когда то, что я действительно хочу, это ничего (NULL).

Поэтому я попытался

if (isset($_POST['title'])) {$newTitle = mysql_real_escape_string(trim($_POST['title']));} else {$newTitle = NULL;}

, и это просто вставляет'NULL' - строка, содержащая слово NULL.

Что я могу сделать, чтобы убедиться, что мои значения NULL вставлены правильно?

Ответы [ 4 ]

2 голосов
/ 11 ноября 2011

То, что у вас есть, хорошо, но вам нужно объединить это с готовым утверждением ...

 // prepare the statement
    $stmt = $mysqli->prepare("INSERT INTO tbl (title, x,y,z) values (?,?,?,?)");

    $stmt->bind_param($newTitle, $x,$y,$z);

    $x = 'hello, world';
 // execute prepared statement
    $stmt->execute(); 

Если x или newTitle имеют значение NULL, они будут равны NULL в БД

2 голосов
/ 11 ноября 2011

Вы можете попробовать добавить NULL без примера кавычек, приведенного ниже:

INSERT INTO tbl (col,col,col,...) VALUES (NULL,'val','val',...)

Также убедитесь, что в столбце, который вы хотите иметь чистый ноль, должен быть отмечен разрешенный NULL .

0 голосов
/ 11 ноября 2011

Я использую '0' вместо нуля. Когда вы используете операторы if, вы можете запускать запросы типа

if($row['f2'] == 0){...

Вместо нуля:)

0 голосов
/ 11 ноября 2011

Не указывайте поле в INSERT INTO и не указывайте значение.Если у вас есть 3 поля, f1, f2, f3, а вы

INSERT INTO tbl (f1, f3) VALUES ('something', 'something')

, тогда f2 не будет вставлен и по умолчанию будет нулевым.

...