PHP MariaDB插入NULL值不起作用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP MariaDB插入NULL值不起作用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1362字,纯文字阅读大概需要2分钟。
内容图文
![PHP MariaDB插入NULL值不起作用](/upload/InfoBanner/zyjiaocheng/686/34412ad6dec74c60b433dbe116d8d95c.jpg)
使用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值不起作用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。