php-使用MySqli将NULL值插入MySql记录

我的页面使用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之间有什么区别?我在*中遵循此answer,希望我可以轻松插入NULL,但随后出现此问题…

谢谢!

PS @*小组-您的拼写检查词典无法识别单词*!

解决方法:

您将product_disc准备为整数,null不是整数.转换为0.

虽然以字符串形式进行准备,但肯定会解决您的问题,这违背了准备mysql语句的目的.考虑以下解决方案:

mysqli_stmt_bind_param($stmt, $product_disc==null?'s':'i', $product_disc);
上一篇:如何从PHP MySQL SQL注入易受攻击的查询转到MySQLi不易受攻击的查询


下一篇:解决进入不了phpmyadmin网页