我有一个PHP脚本,通过它我将数据插入到我的表中但是当我将 org_pid 列设置为空或null时我无法插入数据而我已设置 org_pid 也接受null值但它不接受。这是我的PHP脚本:
<?php
register();
function connectToDatabase(){
$connection=mysqli_connect("localhost","username","password","database");
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
mysqli_set_charset($connection,"utf8");
return $connection;
}
function register(){
$connection = connectToDatabase();
$Username = $_REQUEST['Username'];
$Pass = $_REQUEST['Pass'];
$Email = $_REQUEST['Email'];
$Phone = $_REQUEST['Phone'];
$UserType= $_REQUEST['UserType'];
$OrgID= $_REQUEST['OrgID'];
if($Username!="" && $Pass!=""){
$check = mysqli_query($connection,"select count(*) from user where usr_name='$Username'");
$row = mysqli_fetch_array($check);
if($row[0]>=1){
print "old_user";
}else {
$result = mysqli_query($connection,"insert into user (org_pid,usr_name,usr_email,usr_password,usr_phone,usr_type) values('$OrgID','$Username','$Email','$Pass','$Phone','$UserType')");
if($result!=""){
print "ok";
}else if($result==""){
print "no";
}
mysqli_close($connection);
}
}else {
print "null";
}
}
?>
您可以通过此Link进行检查!链接包含一个链接到我的PHP脚本的简单html页面
答案 0 :(得分:0)
您的SQL代码在所有值周围都有硬编码引号,因此无论外部输入的值如何,都无法插入NULL
。您需要知道NULL
本身就是关键字,并且与'NULL'
完全不同(这只是一个字符串,其中包含没有任何特殊含义的文字NULL文本)。
你应该通过以下方式解决所有问题:
使用预准备语句而不是将数据注入查询
在空字符串上自己分配PHP null(因为它不可能从HTML表单中获得真正的NULL),例如:
$Email = isset($_REQUEST['Email']) && $_REQUEST['Email']=!''
? $_REQUEST['Email']
: null;