Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何正确地将空白变量设置为NULL_Php_Mysql - Fatal编程技术网

Php 如何正确地将空白变量设置为NULL

Php 如何正确地将空白变量设置为NULL,php,mysql,Php,Mysql,我正在使用simplexml\u load\u file()将XML提要解析到MYSQL表中。有些变量是空的,我希望它们是实际的NULL而不是NULL,或者有什么区别 $xml = simplexml_load_file('cb.xml') or die ('Bad XML File'); foreach($xml->item as $item) { $name = $item->name; //Tried if ($name == '') { $name = '

我正在使用simplexml\u load\u file()将XML提要解析到MYSQL表中。有些变量是空的,我希望它们是实际的NULL而不是NULL,或者有什么区别

$xml = simplexml_load_file('cb.xml') or die ('Bad XML File');
foreach($xml->item as $item) {
    $name = $item->name;

//Tried

if ($name == '') {
    $name = 'NULL';
}

//And

if ($name == '') {
    $name = NULL;
}

mysql_query("INSERT INTO cb (name) VALUES ('$name')");

第二个变量初始化正确;第一个是字符串'NULL'(从PHP的角度来看,这并不特殊)。但是,您应该使用prepared语句(或者。如果您想继续使用常规的mysql扩展,请使用

PDO的一个例子是:

$stmt = $pdo_con->prepare("INSERT INTO cb (name) VALUES (?);");
$stmt->execute(array($name));

这将正确处理空值,与当前的字符串插值不同。

这是因为您为MySQL提供了一个字符串:

.... ('ANYTHING WITHIN QUOTES IS A STRING')
当PHP
null
值被“强制”为字符串时,它将变成一个空字符串。因此,您第一次尝试时给出了
…('null')
,现在给出了
…('')

必须在查询中使用
NULL
关键字(不带引号)将
NULL
插入数据库字段

mysql_query("INSERT INTO cb (name) VALUES (" . ($name == null ? "NULL" : "'$name'") . ")");

哦,和往常一样,注意不要让SQL注入未受保护的
$name
变量。

如果您使用了多个值,并且如果else有效,那么请执行以下操作:(我们将在第3列中插入null数据)*注意,单引号被省略。这是因为“null”不能作为sql的字符串输入,否则它将是一个字符串NULL,而不是我们想要的sql NULL

//condition
if ($col3_var !== NULL)
   $col3_var = "'$col3_var'";
else
   $col3_var = "NULL"; //SQL will omit the "" here

$sql = "INSERT INTO tablename
       (col1, col2, col3...)
       VALUES
       ('$col1_var', '$col2_var', $col3_var)";

$result = mysql_query($sql) or die("Err: " . mysql_error());

你能给我一个准备好的语句的例子吗?因为当我用NULL而不是NULL时,MYSQL仍然显示一个空白字段。下面是一个例子。了解它们,使用它们,喜欢它们。第二个可能会在ORACLE上工作。我做到了这一点,我只是在使用多个变量值的语法时遇到了麻烦。