выдаёт ошибку "array(4)"
При попытки отправить данные в базу выдает ошибку: "array(4) { ["dateCL"]=> string(10) "2021-11-25" ["timeCL"]=> string(5) "01:09" ["name"]=> NULL ["tel"]=> string(7) "8465489" }". При этом в БД данные не приходят.
Код из index.php
<div class="record text-center mx-auto">
<p><input type="date" name="dateCL" id="dateCL" placeholder="ДАТА" class="text-center dateCL"></p>
<p><input type="time" name="timeCL" id="timeCL" placeholder="ВРЕМЯ" class="text-center timeCL"></p>
<p><input type="text" name="name" id="name" placeholder="ВАШЕ ИМЯ" class="text-center name"></p>
<p><input type="tel" name="tel" id="tel" placeholder="НОМЕР ТЕЛЕФОНА" class="text-center tel"></p>
<p><button type="submit" class="submit">ЗАПИСАТСЯ</button></p>
</div>
</div>
</div>
<script>
$(document).ready(function(){
$('button.submit').on('click', function(){
var dateCL = $('input.dateCL').val();
var timeCL = $('input.timeCL').val();
var name = $('input.name').val();
var tel = $('input.tel').val();
$.ajax({
method: "POST",
url: "component/send.php",
data: { dateCL: dateCL, timeCL: timeCL, name: name, tel: tel }
})
.done(function( msg ) {
alert( "Data Saved: " + msg );
});
})
})
</script>
код из send.php
$data = [
"dateCL" => $_POST["dateCL"],
"timeCL" => $_POST["timeCL"],
"name" => $_POST["bame"],
"tel" => $_POST["tel"],
];
$connection = new PDO('mysql:host=localhost;dbname=jonny', 'root', '');
$sql = 'INSERT INTO waiting (dateCL, timeCL, name, tel) VALUES (:dateCL, :timeCL, :name, :tel)';
$statement = $connection->prepare($sql);
$result = $statement->execute($data);
var_dump($data);
Ответы (1 шт):
указанное сообщение это не ошибка а вывод var_dump в конце кода. Ошибок вы никаких не получаете, поскольку PDO по умолчанию не использует исключения. Если вы проверите результат возврата execute(), то там будет false.
Чтобы PDO выкидывал исключение при ошибке, передайте 4м параметром вызова конструктора массив [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION].
Параметры в prepare() передаюется в виде [':param' => $value] с двоеточием у имени плейсхолдера (зачем не знаю, но так).
скорее всего указанные изменения либо решат проблему, либо по крайней мере покажут ошибку.
Что касается клиентской части, то логичнее поля идентифицировать не классом, а по ID. в итоге клиентской код для отправки запросам можно упросить до
$("#send").click(function(){
let data = {
dateCL: $("#dateCL").val(),
....
} ;
$.post("/path/to/script", data, function(result){
console.log(result);
});
});
URL для отправки лучше всегда начинать с корня