使用MySqli将NULL值插入MySql记录

时间:2011-04-15 13:07:26

标签: php mysql mysqli

我的页面使用ajax数据发送到php脚本。脚本获得的其中一个变量是:$ product_disc 现在我在脚本中做的一个小测试清楚地表明$ product_disc为null。测试:

if ($product_disc == null)
 {$test="null";}
 else {$test="not null";}

我让我的代码返回$ test到ajax调用过程:

$return_array['success'] = array ('test' => $test);

使用Firebug我看到ajax响应有:“test”:“null”
所以我得出结论$ product_disc的值是:null

现在,在我的脚本中,我使用以下代码将数据插入MySql DB:

$stmt = mysqli_prepare($link, "INSERT INTO set_products (id,discount) VALUES (NULL , ?)");
mysqli_stmt_bind_param($stmt, "i", $product_disc);
mysqli_stmt_execute($stmt);
mysqli_stmt_close($stmt);

正在执行查询,但插入的值为0而不是NULL!
只有当我明确添加:$ product_disc = null;在MySqli语句之前,插入的值为NULL。

为什么? null和null之间有什么不同?我在stackoverflow中遵循这个answer希望我可以轻松地插入NULL但是后来出现了这个问题......

谢谢!

PS @stackoverflow团队 - 您的拼写检查词典无法识别单词stackoverflow!

1 个答案:

答案 0 :(得分:4)

您将product_disc准备为整数,null不是整数。它被转换为0。

准备作为字符串时,肯定会解决您的问题,但它违背了准备mysql语句的目的。考虑这个解决方案:

mysqli_stmt_bind_param($stmt, $product_disc==null?'s':'i', $product_disc);