2015-10-18 126 views
-1

将新行插入到表中时出现了一些奇怪的SQL问题。我将一些列设置为NULL,就像我在数据库中的另一个表一样。显然,当插入时没有数据传递时,它应该在记录中输入NULL,但是现在不是。SQL NULL插入不起作用

我已经检查了所有设置与我的其他表(它正确插入记录为NULL),但无法找到问题。这两列显示如下,在两个表中。

`statement_1` varchar(255) DEFAULT NULL, 

没有数据被粘贴(所以不是空白空间问题)。任何人都可以提出为什么一张桌子按预期行事,但另一张桌子不是?

使用下面的INSERT语句

$statement_a = "INSERT INTO statements (ucsid, statement_1, statement_2, statement_3, statement_4, statement_5, statement_6, statement_7, statement_8, statement_9, statement_10) VALUES (:ucsid, :statement_1, :statement_2, :statement_3, :statement_4, :statement_5, :statement_6, :statement_7, :statement_8, :statement_9, :statement_10)"; 
    $q_a = $this->db_connection->prepare($statement_a); 
    $q_a->execute(array(':ucsid'=>$ucsid, 
         ':statement_1'=>$statement_1, 
         ':statement_2'=>$statement_2, 
         ':statement_3'=>$statement_3, 
         ':statement_4'=>$statement_4, 
         ':statement_5'=>$statement_5, 
         ':statement_6'=>$statement_6, 
         ':statement_7'=>$statement_7, 
         ':statement_8'=>$statement_8, 
         ':statement_9'=>$statement_9, 
         ':statement_10'=>$statement_10)); 
+0

您需要提供更多信息才能为您提供帮助。什么是错误信息?你如何得到错误信息?您是从编程语言执行SQL语句还是直接执行数据库?哪个SQL语句正在执行? –

+0

什么是插入而不是null? –

+0

@MarcoAurélioDeleu没有错误消息,因为其余条目正在成功插入,只是当记录为空时,不会添加NULL值。我正在使用PHP,但是这是通过PHP插入和通过phpMyAdmin接口插入发生的。 –

回答

0

我已经通过确保NULL是通过函数传递,如果没有已插入通过使用下面的代码

固定的问题

if($_POST['statement_1'] == '') { $statement_1 = NULL; } else { $statement_1 = $_POST['statement_1']; }

-1

这里由varriable $statement_1传递的值将是""

尝试此查询SELECT * FROM my_table WHERE statement_1 =""。你会得到行。

这意味着你正在给$ statement_1分配一些值,否则它应该为空。 检查您的代码。希望这有助于

+0

我们已经知道了。我们如何解决这个问题? –

+0

要么你不应该通过$ statement_1或分配$ statement_1 = null(默认值)。两者都能正常工作吗? –

0

,因为我新我不能添加评论:

使用NOT phpMyAdmin的尝试一个简单的INSERT语句。尝试

http://www.heidisql.com/ OR https://www.mysql.com/products/workbench/

  1. INSERT INTO语句(ucsid)VALUES(123)
  2. INSERT INTO语句(ucsid,statement_1)VALUES(123,NULL)

在这两种情况下, statement_1应该是NULL。你的情况最可能不是。但是,这将告诉问题在于数据库表,而不是使用php或您正在使用的php执行方法。

另外是statement_1字段定义为NOT NULL,默认设置为NULL?这不可能发生。

尝试重新创建没有记录的新数据库和新表,并尝试将NULL作为值插入测试。

您也可以发表您的数据库和表字符集和校对的SQL

+0

使用HeidiSQL将数据正确插入,并添加空值,因为它们应该是。这是否意味着错误来自脚本内的某个地方? 请参阅sql:http://pastebin.com/nhp6nu24 –