使用NULL值变量从PHP向MySQL插入NULL值

时间:2011-05-09 01:57:02

标签: php mysql wordpress

我正在使用WordPress数据库接口插入一些可以为空的行值。

功能: $wpdb->insert( $table, $data, $format );
在$ data参数中获取一组值。如果我从$ data数组中排除某些字段值,则表中的字段显示为null。但是,我希望能够使用所有字段的值填充$ data数组,但在需要时将这些值设为null。但是,如果我传递的值= NULL,则数据库值不为空,而是空白。我该怎么办?

2 个答案:

答案 0 :(得分:2)

查看wpdb源代码,“insert”方法最终被映射到SQL,将每个字段值放在单引号之间(第1233行):

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

要插入一个真正的NULL,您需要将一个未加修饰的NULL单词放入该表达式中,并且不允许这样做。所以插入的是4个字母的字符串“NULL”。

请注意,此方法会让用户插入正确的数据类型,并依赖于MySQL自动转换引用的数据类型。将数值转换为实数数值。

答案 1 :(得分:1)

看起来如下工作:

而不是:
$nullable_value = NULL;
这样做:
$nullable_value = mysql_escape_string("NULL");

有关说明,请参阅主题答案herehere

修改

乍一看,这在DB中不起作用,因为@le dorfier声明......