我卡住了,我无法修复我收到的这个错误,我认为可能是我的数据库选项搞砸了
此处将数据放入表格
<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>
(忽略最后一张照片中的前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;在表单,控制器,模型和数据库表中。它可以解决你的问题。