1048列值不能为空

时间:2014-06-11 17:58:52

标签: php database forms

我卡住了,我无法修复我收到的这个错误,我认为可能是我的数据库选项搞砸了

此处将数据放入表格

 <form name = "quoted" method="post" onsubmit="get_action(this);">
 <input id = "poster" type="text" name="poster" required="required" placeholder = "Credited Individual.">     <br>
 <textarea class = "actual_quote" name = "actual_quote" required="required" placeholder = "Write the question here!"></textarea><br><br><br>
 <div class = "checkboxes" required="required">
     <h3 style = "margin-top:-20px;">Please select one catagory that the quote falls into.</h3>
     <label for="x"><input type="radio" name="x" value="Inspirational" id = "inspirational.php" checked="checked" />    <span>Inspirational</span></label><br>
     <label for="x"><input type="radio" name="x" value="Funny" id = "funny.php" /> <span>Funny</span>    </label><br>
     <label for="x"><input type="radio" name="x" value="OutofContext" id = "outofcontext.php"/>    <span>OutofContext</span></label>
 </div>
 <input id = "submit1" name="submit1"s type="submit"><br>
 </form>

并且将php放入数据库

     <?php
     $db_name = 'submissions';
     $db_user = 'root';
     $db_pass = '';
     $db_host = 'localhost';
     try {
     $db = new PDO('mysql:host = localhost;dbname=submissions', $db_user, $db_pass);
     $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
     } catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
     }
     $actual_quote = (isset($_POST['actual_quote']) ? $_POST['actual_quote'] : null);
     $poster = (isset($_POST['poster']) ? $_POST['poster'] : null);
     $sql = "INSERT INTO data (actual_quote, poster) VALUES ( :actual_quote, :poster)";
     $query = $db->prepare($sql);
     $query->execute(array(':actual_quote'=>$actual_quote, ':poster'=>$poster));
?>
  

(!)致命错误:未捕获的异常&#39; PDOException&#39;消息&#39; SQLSTATE [23000]:完整性约束违规:1048列&#39; actual_quote&#39;不能为空&#39;在第113行的C:\ wamp \ www \ Quotr \ webweb2.php中(!)PDOException:SQLSTATE [23000]:完整性约束违规:1048列&#39; actual_quote&#39;在第113行的C:\ wamp \ www \ Quotr \ webweb2.php中不能为null   时间记忆功能位置   1 0.0015 257160 {main}().. \ webweb2.php:0 2 0.0206 267672 execute().. \ webweb2.php:113

当我在数据库中单击null时,单击表单上的提交按钮,错误消失,数据显示在数据库中,但没有值,那里什么也没有

有人可以告诉我什么是错的以及如何解决这个问题,如果它在代码中,我个人认为数据库存在问题,这里有一些照片。< / p>

  

http://i.imgur.com/0wrd7bT.png

     

http://i.imgur.com/OKEWCmf.png

(忽略最后一张照片中的前3张,最后一张是我所在的位置)

3 个答案:

答案 0 :(得分:3)

数据库没有问题。它正在做它应该做的事情。

当数据库为您提供这些错误时,它会告诉您正在尝试将“nothing”(null)输入到不允许它的列中。您没有发送任何内容,因为如果未设置$_POST['actual_quote'],则为空。如果未设置或在数据库中允许null,则删除该操作。

另外:摆脱s"之后的name="submit1"s

答案 1 :(得分:3)

当$ _POST [&#39; actual_quote&#39;]未设置时,您将$ actual_quote设置为null ...但是在数据库端,您已将此字段设置为不允许NULL。在$ _POST [&#39; actual_quote&#39;]未设置时(如下所示),允许在数据库上使用NULL或发送空字符串(两个单引号)。

$actual_quote = (isset($_POST['actual_quote']) ? $_POST['actual_quote'] : '');

答案 2 :(得分:1)

我遇到了同样的问题。 &#39;字段名称&#39;在视图页面和数据库的列名称是无关紧要的。我的问题是:

"Integrity constraint violation: 1048 Column 'MoneyMethod' cannot be null".

我的观看页面输入标记:

{!! Form::select("MoneyMethod", $MoneymethodInfo, null,["class"=>"form-control MoneyMethod required","id"=>"MoneyMethod"]) !!},

注意MoneyMethod&#39;的拼写。在我的数据库表$table->string('MoneyMethod', 100);中,money方法与查看页面相同,但在我的控制器中

$riskfund->Moneymethod  = Input::get('Moneymethod');

仔细查看Moneymethod&#39; Moneymethod&#39;与视图页面和数据库表列不同。纠正拼写后,它现在正在运行。

因此,请检查&#39;字段名称的拼写&#39;和&#39;数据库表的列名&#39;在表单,控制器,模型和数据库表中。它可以解决你的问题。