大佬教程收集整理的这篇文章主要介绍了PHP MariaDB插入NULL值不起作用,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在向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,请注明来意。