Вставка NULL-значения в MySQL из PHP с использованием NULL-значной переменной - PullRequest
1 голос
/ 09 мая 2011

Я использую интерфейс БД WordPress для вставки некоторых обнуляемых значений строк.

Функция: $wpdb->insert( $table, $data, $format );
принимает массив значений в параметре $ data.Если я исключаю определенные значения полей из массива $ data, поля отображаются в таблице как пустые.Тем не менее, я хочу иметь возможность заполнять массив $ data значениями для всех полей, но при необходимости сделать эти значения пустыми.Тем не менее, если я передам значения, которые = NULL, значения базы данных будут не нулевыми, а пустыми.Что мне делать?

Ответы [ 2 ]

2 голосов
/ 17 мая 2011

Глядя на исходный код wpdb, метод «insert» заканчивается отображением в SQL, который помещает каждое значение поля в одинарные кавычки (строка 1233):

    $sql = "{$type} INTO `$table` (`" . implode( '`,`', $fields ) . "`) 
                VALUES ('" . implode( "','", $formatted_fields ) . "')";

Для вставки реального NULLвам нужно поместить в это выражение неукрашенное пустое слово, и оно не допускается.Таким образом, вставляется 4-буквенная строка «NULL».

Обратите внимание, что этот метод предоставляет пользователю возможность вставлять правильные типы данных и зависит от MySQL для автоматического преобразования кавычек, например чисел, в действительные числазначения.

1 голос
/ 09 мая 2011

Похоже на следующие работы:

Вместо:
$nullable_value = NULL;
делать:
$nullable_value = mysql_escape_string("NULL");

Для объяснения смотрите ветку ответов здесь и здесь .

EDIT:

На второй взгляд, это не сработает в БД, потому что @le dorfier заявляет ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...