Не происходит запись в БД sqlite (php)

63
16 марта 2022, 23:50

Не происходит запись данных формы в БД. Не могу понять почему. Подскажите, в чем может быть ошибка?

Данные в массив $_POST записываются, вижу в консоли браузера. А в БД данные не появляются. Ошибок никаких не возникает (не вижу их в журнале ошибок на сервере).

Поправьте, пожалуйста, что я неправильно делаю?

Код такой:

<?php
$user_id;
$user_name;
$login;
$password;
$repassword;
$phone;
$role;
if(isset($_POST['user_id'])) {$user_id = $_POST['user_id'];} 
if(isset($_POST['user_name'])) {$user_name = $_POST['user_name'];};
if(isset($_POST['login'])) {$login = $_POST['login'];};
if(isset($_POST['password'])) {$password = $_POST['password'];};
if(isset($_POST['repassword'])) {$repassword = $_POST['repassword'];};
if(isset($_POST['phone'])) {$phone = $_POST['phone'];};
if(isset($_POST['role'])) {$role = $_POST['role'];};

$new = new PDO('sqlite:'.__DIR__.DIRECTORY_SEPARATOR.'test.sqlite3; host=localhost', 'admin', 'qwerty');

$stmt=$new->exec("INSERT INTO board_users (user_id,login,password,phone,role,user_name) VALUES     
('$user_id','$login','$password','$phone','$role','$user_name')");
?>

Пробовала так тоже:

$stmt = $new->prepare("INSERT INTO board_users (user_id,login,password,phone,role,user_name) VALUES 
('$user_id','$login','$password','$phone','$role','$user_name')");
$stmt=$new->exec();
Answer 1

В результате выяснилось, что для записи в БД sqlite через PDO нужно было просто убрать хост и данные авторизации. И все заработало.

Вот такой вариант рабочий:

$new = new PDO('sqlite:'.__DIR__.DIRECTORY_SEPARATOR.'test.sqlite3');
Answer 2

Вас не смущает что сохраняемые переменные в одинарных кавычках? Переделайте на это:

    $stmt = $new->prepare("INSERT INTO board_users (user_id,login,password,phone,role,user_name) VALUES ($user_id,$login,$password,$phone,$role,$user_name)");

Лучше вообще делать экранирование и проверять параметры. К примеру:

$stmt = $new->prepare("INSERT INTO board_users (user_id,login,password,phone,role,user_name) VALUES (:user_id,:login,:password,:phone,:role,:user_name)");
$stmt->bindParam(':user_name', $user_name, PDO::PARAM_STR);
...//остальные параметры
$stmt ->execute();
READ ALSO
Получение списка всех таксономий wordpress

Получение списка всех таксономий wordpress

У меня есть задача нужно в селект выгружать список всех созданных в вордпрессе рубрик, перерыл кучу функций в WP, но все они завязаны на том...

113
Как считать текст между одинаковыми символами и записать его в переменную

Как считать текст между одинаковыми символами и записать его в переменную

По клике на кнопку в форму отправки сообщения вставляется ник пользователя которому адресовано это сообщениеНа выходе получается @Ник получателя@,...

78
Валидация диапазонов чисел Yii2

Валидация диапазонов чисел Yii2

Допустим, у меня в бд есть числовые поля value_from и value_toТам хранятся значение вида value_from 1, value_to 3 первая запись

85
Как записать имена загружаемых файлов в одну строку или столбец БД?

Как записать имена загружаемых файлов в одну строку или столбец БД?

При использовании обычной загрузки файла(без multiple), имя файла записывается в нужный столбец в БД, но при загрузке множества файлов(с multiple)...

62