如何正确设置空变量为NULL

Zan*_*zio 2 php mysql

我正在使用simplexml_load_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')");
Run Code Online (Sandbox Code Playgroud)

zne*_*eak 5

这是因为你给MySQL一个字符串:

.... ('ANYTHING WITHIN QUOTES IS A STRING')
Run Code Online (Sandbox Code Playgroud)

null当"转换"为字符串时,PHP 值变为空字符串.所以你的第一次尝试给了... ('NULL'),现在它给了... ('').

您必须NULL在查询中使用不带引号的关键字插入NULL数据库字段.

mysql_query("INSERT INTO cb (name) VALUES (" . ($name == null ? "NULL" : "'$name'") . ")");
Run Code Online (Sandbox Code Playgroud)

哦,像往常一样,注意不要使用未受保护的$name变量注入SQL .