SQLSTATE [23000]:完整性约束违规:1048列“post”不能为null

时间:2013-11-18 21:24:44

标签: php mysql sql

我有这些代码但是当我尝试这些代码时,我得到了:

  

SQLSTATE [23000]:完整性约束违规:1048列“post”不能为null   这个错误。

我找不到任何解决方案。我尝试了另外一些功能,这些功能是他们工作的,但是这个功能不起作用。

?>
<form method="post">
Buraya yaz <br><textarea style="resize:none" name="post"></textarea> <br><input type="submit" value="Gönder">
</form>

<?php 
if(empty($_POST['post'])){
echo 'you should fill the area.';
exit;
}
if (empty($errors) === true) {
$users->sendpost($post);
}
?>

public function sendpost($post){
$query  = $this->db->prepare("INSERT INTO `posts` (`post`) VALUES (?) ");
$query->bindValue(1, $post);
try{
$query->execute();
}catch(PDOException $e){
die($e->getMessage());
}   
}

3 个答案:

答案 0 :(得分:1)

插入$ post = $ _POST ['post'];

$post = $_POST['post'];

if(empty($_POST['post'])){
echo $errors[] = 'you should fill the area.';
}
if (empty($errors) === true){
$users->sendpost($post);
}

答案 1 :(得分:0)

其中一个问题是您正在显示错误但没有对此做任何事情。将其更改为:

if(empty($_POST['post'])){
  echo 'you should fill the area.';
  exit;
  }

但是,作为主要建议,您应该使用可以捕获的异常:

if(empty($_POST['post'])){
  throw new Exception("You should fill the area.");
  }

这不是唯一的错误,如@RocketHazmat的评论中所述。如果你不明白他在说什么,你应该$users->sendpost($_POST);而不是$users->sendpost($post);

答案 2 :(得分:0)

我面临同样的问题。 &#39;字段名称&#39;在视图页面中,数据库的列名称不同。我的问题是:      "Integrity constraint violation: 1048 Column 'MoneyMethod' cannot be null"。 我的表单输入标记为{!! Form::select("MoneyMethod", $MoneymethodInfo, null,["class"=>"form-control MoneyMethod required","id"=>"MoneyMethod"]) !!},请注意&#39; MoneyMethod&#39;的拼写。并在我的数据库表$table->string('MoneyMethod', 100);中拼写了MoneyMethod&#39;与表单相同,但在我的控制器中$riskfund->Moneymethod = Input::get('Moneymethod');仔细查看“Moneymethod&#39;与视图页面和数据库表列不同。纠正拼写后,它现在正在运行。 所以,请检查&#39; post&#39;的拼写。在表单,控制器,数据库表中。它可能对你有所帮助。