Я создаю веб-сайт и хочу отправить данные в MySQL, но он не отправляет.
Я могу дать более подробную информацию, если это необходимо.
Полный код https://pastebin.com/JW5UUQbt
if (isset($_POST['submit2']))
{
$pid=intval($_GET['pkgid']);
$useremail=$_SESSION['login'];
$date=$_POST['date'];
$time=$_POST['time'];
$comment=$_POST['comment'];
$status=0;
$sql = "INSERT INTO tblbooking (PackageId, UserEmail, BDate, BTime, Comment, status) VALUES (:pid, :useremail , :bdate , :btime , :comment , :status);";
$query = $dbh->prepare($sql);
$query->bindParam(':pid',$pid,PDO::PARAM_STR);
$query->bindParam(':useremail',$useremail,PDO::PARAM_STR);
$query->bindParam(':bdate',$date,PDO::PARAM_STR);
$query->bindParam(':btime',$time,PDO::PARAM_STR);
$query->bindParam(':comment',$comment,PDO::PARAM_STR);
$query->bindParam(':status',$status,PDO::PARAM_STR);
$query->execute();
?>
<form name = "book" method = "post">
<label class = "inputLabel">Date</label>
<input type = "text" name = "date" required = "">
<div class = "bnr-right">
<label class = "inputLabel">Time</label>
<input type = "text" name = "time" required = "">
</div>
<label class = "inputLabel">Comment</label>
<input class = "special" type = "text" name = "comment">
</li>
<?php if ($_SESSION['login'])
{?>
<li class = "spe" align = "center">
<button type = "submit" name = "submit2" class = "btn-primary btn">Book</button>
</li>
<?php } else {?>
<li class = "sigi" align = "center" style = "margin-top: 1%">
<a href = "#" data-toggle = "modal" data-target = "#myModal4" class = "btn-primary btn" > Book</a></li>
<?php } ?>
</div>
</div>
</form>
<?php }} ?>
phpMyAdmin — это инструмент администрирования MySQL, написанный на PHP, а не сама база данных. Вероятно, вы используете MySQL или MariaDB в качестве БД.
После отправки данные не достигают базы данных
Возможный дубликат Мое заявление PDO не работает
Вы можете попробовать систему отладки компьютерного программного обеспечения, известную как отладка резиновой утки en.wikipedia.org/wiki/Rubber_duck_debugging.
Вы выполнили базовую отладку, проверили используемые вами переменные, например: echo $pid;, echo $useremail;, echo $date;, echo $time;, echo $comment;, посмотрите, что они содержат?
print_r($dbh->errorInfo()); показывает Array ( [0] => 00000 [1] => [2] => )






Я немного упростил код (включая жесткое кодирование значений $useremail и $pid), чтобы определить, что может быть причиной проблемы, и это сработало с первого раза:
<?php
// DB credentials.
define('DB_HOST','localhost');
define('DB_USER','root');
define('DB_PASS','');
define('DB_NAME','test');
// Establish database connection.
try
{
$dbh = new PDO("mysql:host = ".DB_HOST.";port=3307;dbname = ".DB_NAME,DB_USER, DB_PASS,array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'"));
}
catch (PDOException $e)
{
exit("Error: " . $e->getMessage());
}
?>
<?php
if (isset($_POST['submit2']))
{
$pid=6;
$useremail= "[email protected]";
$date=$_POST['date'];
$time=$_POST['time'];
$comment=$_POST['comment'];
$status=0;
$sql = "INSERT INTO tblbooking (PackageId, UserEmail, BDate, BTime, Comment, status) VALUES (:pid, :useremail , :bdate , :btime , :comment , :status);";
$query = $dbh->prepare($sql);
$query->bindParam(':pid',$pid,PDO::PARAM_STR);
$query->bindParam(':useremail',$useremail,PDO::PARAM_STR);
$query->bindParam(':bdate',$date,PDO::PARAM_STR);
$query->bindParam(':btime',$time,PDO::PARAM_STR);
$query->bindParam(':comment',$comment,PDO::PARAM_STR);
$query->bindParam(':status',$status,PDO::PARAM_STR);
$query->execute();
}
?>
<form name = "book" method = "post">
<label class = "inputLabel">Date</label>
<input type = "text" name = "date" required = "">
<div class = "bnr-right">
<label class = "inputLabel">Time</label>
<input type = "text" name = "time" required = "">
</div>
<label class = "inputLabel">Comment</label>
<input class = "special" type = "text" name = "comment">
<button type = "submit" name = "submit2" class = "btn-primary btn">Book</button>
</form>
Fatal error: Uncaught Error: Call to a member function prepare() on null in X:\OSPanel\domains\kajaki2.com\package-details.php:12 Stack trace: #0 {main} thrown in X:\OSPanel\domains\kajaki2.com\package-details.php on line 12 попробовал этот stackoverflow.com/questions/28592400/…, но не работает
Я отредактировал код, включив в него детали подключения к базе данных, которые я использовал, единственное отличие от кода в pastebin — это имя базы данных — test, и я включил номер порта в соединение, поскольку у меня более одного MySQL, работающего локально.
И все же вопросы остаются
Какие у вас проблемы?
Значения не появились в БД
Убедитесь, что вы используете правильные имена базы данных и таблиц.
Ничего не вставляется в столбец UserNumber в запросе, и для него установлено значение NOT NULL, поэтому значение должно быть вставлено или изменено на NULL.
Удаление столбца UserNumber исправлено, что за глупая ошибка
С кем не бывает :)
Журналы - ваш друг. Они, как правило, говорят вам, что не работает и где именно. В противном случае мы просто тратим время на догадки. Что конкретно не работает?