Я застрял, я не могу исправить эту ошибку, которую я получаю, и я думаю, что возможно, что мои параметры базы данных перепутаны
Здесь данные помещаются в форму
<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)); ?>
(!) Неустранимая ошибка: исключить исключение «PDOException» с сообщением «SQLSTATE [23000]: нарушение ограничения целостности: 1048 Столбец« actual_quote »не может быть« null »в C: \ wamp \ www \ Quotr \ webweb2.php в строке 113 (! ) PDOException: SQLSTATE [23000]: Нарушение ограничения целостности: 1048 Столбец «actual_quote» не может быть нулевым в C: \ wamp \ www \ Quotr \ webweb2.php в строке 113 Время стека вызовов Время Функция Функция 1 0.0015 257160 {main} () .. \ webweb2.php: 0 2 0.0206 267672 execute () .. \ webweb2.php: 113
Когда я нажимаю «null» в базе данных, и я нажимаю кнопку «Отправить» в форме, ошибка исчезает, и данные отображаются в базе данных, но нет значений, там ничего нет.
может кто-то сказать мне, что случилось, и как это исправить, если это в коде, я лично думаю, что есть проблема с базой данных, вот некоторые фотографии этого.
http://img.ruphp.com/forms/0wrd7bT.png
http://img.ruphp.com/forms/OKEWCmf.png
(проигнорируйте первые 3 на последнем снимке, последний, где я нахожусь)
В базе данных ничего не получается. Он делает именно то, что он должен делать.
Когда база данных дает вам эти ошибки, она сообщает вам, что вы пытаетесь ввести «ничего» (null) в столбец, который этого не позволяет. Вы ничего не отправляете, потому что если $_POST['actual_quote']
не установлен, он равен нулю. Либо избавитесь от этого действия, если оно не установлено, либо разрешить null в базе данных.
Также: избавиться от s
после "
in name="submit1"s
.
Вы устанавливаете $ actual_quote как null, когда $ _POST ['actual_quote'] не установлен … но на стороне базы данных вы установили это поле, чтобы не разрешать NULL. Либо разрешить NULL в базе данных, либо отправить пустую строку (две одинарные кавычки), когда $ _POST ['actual_quote'] не установлен (как показано ниже).
$actual_quote = (isset($_POST['actual_quote']) ? $_POST['actual_quote'] : '');
Я столкнулся с такой же проблемой. «Имя поля» на странице просмотра и имя столбца базы данных были безразличными. Моя проблема:
"Integrity constraint violation: 1048 Column 'MoneyMethod' cannot be null".
Входной тег моей страницы просмотра:
{!! Form::select("MoneyMethod", $MoneymethodInfo, null,["class"=>"form-control MoneyMethod required","id"=>"MoneyMethod"]) !!},
обратите внимание на правописание «MoneyMethod» в моей таблице базы данных $table->string('MoneyMethod', 100);
метод написания денег аналогичен странице просмотра, но в моем контроллере
$riskfund->Moneymethod = Input::get('Moneymethod');
внимательно посмотрите, как написано «Moneymethod» отличается от столбца страницы просмотра и таблицы базы данных. После исправления орфографии он работает сейчас.
Итак, проверьте правописание «значение» в форме, контроллере, таблице базы данных. Это может решить вашу проблему.