php不能添加空值,PHP MariaDB插入NULL值不起作用

本文强调了在PHP中使用预处理语句以提高数据库操作的安全性,特别是防止SQL注入。示例代码展示了如何在$name变量可能为null时正确插入NULL值,以及如何使用PDO进行预处理查询,确保数据安全。同时提到了使用mysqli_real_escape_string作为替代防御措施。
摘要由CSDN通过智能技术生成

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

然后,讨论当前的问题.数据库不知道什么是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();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值