2017-03-08 86 views
0

我通过php将一些数据插入到mysql数据库中。问题是,当我尝试向列中插入空值时,它不会像这样存储:NULL它实际上保存NULL作为文本或当我从我的PHP脚本中删除if语句时,它将插入一个可用空间柱。 这是我的PHP代码:将NULL插入到具有Varchar数据类型的列中

<?php 

register(); 

function connectToDatabase(){ 
$connection=mysqli_connect("localhost","username","pass","db"); 
if (mysqli_connect_errno()) { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 
mysqli_set_charset($connection,"utf8"); 
return $connection; 
} 


function register(){ 

$connection = connectToDatabase(); 
$OrgID = $_REQUEST['OrgID']; 
$OrgName = $_REQUEST['OrgName']; 
$OrgAddress = $_REQUEST['OrgAddress']; 
$OrgPhone = $_REQUEST['OrgPhone']; 


if($OrgName!=""){ 

    $check = mysqli_query($connection,"select count(*) from organization where org_name='$OrgName'"); 
    $row = mysqli_fetch_array($check); 
    if($row[0]>=1){ 

     print "old_user"; 

    }else { 

     $result = mysqli_query($connection,"insert into organization (org_id,org_name,org_address,org_phone) values('$OrgID','$OrgName','$OrgAddress','$OrgPhone')"); 

     if($result!=""){ 
      print "ok"; 
     }else if($result==""){ 
      print "no"; 
     } 

     mysqli_close($connection); 
    } 

}else { 
    print "null"; 
} 

} 

?> 

当我把if语句来检查这个样子保存NULL作为文本:

if($OrgID == '') 
{ 
    $OrgID = 'NULL';  
} 

这是我的表结构:

CREATE TABLE IF NOT EXISTS `organization` (
`org_pid` int(11) NOT NULL AUTO_INCREMENT, 
`org_id` varchar(16) DEFAULT NULL, 
`org_name` varchar(45) NOT NULL, 
`org_address` varchar(255) DEFAULT NULL, 
`org_phone` varchar(45) NOT NULL, 
PRIMARY KEY (`org_pid`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=12 ; 
+0

因为您在单个quores中有空''$ orgID''是一个字符串。 – Jens

+0

BTW了解准备好的语句 – Jens

+0

[MySQL更新Varchar列与NULL]可能的重复(http://stackoverflow.com/questions/34963707/mysql-updating-varchar-column-with-null) –

回答

0

null应设置为:

$OrgID = null; 

即不带引号。

+0

@Niraj Shah它不工作的家伙 –

相关问题