PHP PDO:为什么将空的产量为0(Php PDO: Why does Inserting NUL

2019-10-29 02:40发布

我搜索任何可能的帮助,可以在网上找到,但仍然使用PHP PDO与持续INSERT NULL的问题。

该脚本是一个csvupload剧本最初从这里走过导入CSV到MySQL

为了使长话短说,让我介绍了可能的原因..

if($linearray[4]=='Unknown')
    $linearray[4]=null;
$linemysql = implode("','",$linearray);
$linemysql = "'".$linemysql."'";
$setsu->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$tsuika = $setsu->prepare("INSERT INTO tablename (SubAgentID, BookID, AgentID, SubAgentName, Risk, Area, CurrentBalance) VALUES ($linemysql)");
$tsuika -> bindValue(':Risk', null, PDO::PARAM_INT);
$tsuika ->execute();

看上面的代码,我明确设置的准备statment字段值。 在PHPMYADMIN的Risk字段接受NULL,默认值设置为NULL,并没有任何问题。 但随着PHP做INSERT时,得到的值是0,为什么?

插入之前,我赞同它如果电场$ linearray [4]包含未知,将其转换为NULL屈服“”该部分。

表结构

CREATE TABLE IF NOT EXISTS `subagentdb` (
`SubAgentID` int(10) NOT NULL AUTO_INCREMENT,
  `BookID` int(10) NOT NULL,
  `AgentID` int(10) NOT NULL,
  `SubAgentName` varchar(30) NOT NULL,
  `Risk` float DEFAULT NULL,
  `Area` varchar(20) NOT NULL,
  `CurrentBalance` float NOT NULL,
  PRIMARY KEY (`SubAgentID`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8mb4 AUTO_INCREMENT=1 ;

Answer 1:

你明确地结合价值为PDO::PARAM_INT 。 你传进去的值将被转换为int因为这一点。 null强制转换为0

要真正地结合SQL NULL值,则需要将值绑定PDO::PARAM_NULL



Answer 2:

只需使用PDO :: PARAM_NULL而不是PDO :: PARAM_INT? 我认为NULL转换为0(INT)的,而不是空值



文章来源: Php PDO: Why does Inserting NULL yields to 0
标签: php mysql pdo null