PHP   发布时间:2022-04-05  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了PHP MariaDB插入NULL值不起作用大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

使用PHP版本7.1.9,MariaDb 10.1.26.

我正在向MysqL数据库提交表单数据,我的值之一是NULL,但是在数据库中它是空的.

我确保将数据库表设置为;

>允许null =是
>认-空

我的代码在下面(请忽略这是简化代码的任何安全漏洞);

$id = $_POST['id '];
$name = $_POST['name'] ? $_POST['name'] : NULL ;
$sql = "INSERT INTO staff (id, Name) VALUES ('".$id."', '".$name."')
// query runs and inserts successfully

当我var_dump($Name)我得到NULL,尽管我数据库中的名称值是空的(即不为空)

任何想法我在做什么错?

解决方法:

首先,您显然没有使用准备好的语句.我强烈建议您以安全性和稳定性的名义使用准备好的语句.

然后,讨论当前的问题.数据库不知道什么是PHP空值,只会看到在您的代码中插入一个空字符串.

"" . null . "" === ""

保留示例代码(非常危险和易受攻击),并修改在要插入的字符串周围添加“引号”的位置.如果名称为null,则插入NULL,并在其周围加上引号.数据库服务器将解释为必须插入空值

$name = $_POST['name'] ? "'".$_POST['name']."'" : 'NULL';
$sql = "INSERT INTO staff (id, Name) VALUES ('".$id."', ".$name.")";

现在,确实要研究如何执行准备好的查询以防止sql注入
或至少使用MysqLi_real_escape_String或等效的名称.

这是使用PDO的更安全的版本.

$sql = "INSERT INTO staff (id,Name) VALUES (:id,:Name)";
$stmt= $dpo->prepare($sql);
$stmnt->bindParam(':id', $id, PDO::PARAM_int);

if(!$POST['name']) {
    $stmnt->bindParam(':name', null, PDO::PARAM_null);
}
else {
   $stmnt->bindParam(':name', $POST['name'], PDO::PARAM_STR);
}
$stmt->execute();

大佬总结

以上是大佬教程为你收集整理的PHP MariaDB插入NULL值不起作用全部内容,希望文章能够帮你解决PHP MariaDB插入NULL值不起作用所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: