0

Приветствую господа профессионалы, не могу разобраться с pdo, вот есть код:

//Эту страку хочу разбить и засунуть в массив
$variable = "userName#userSurname#userTelefon#userEmail#userPasword_1#userPasword_2";

$pieces = explode("#", $variable);

//Вызиваю функцию и подставляю значения с массива in_db("INSERT INTO authorized_user SET name = $pieces[0], surname = $pieces[1], mail = $pieces[2], telefon = $pieces[3], pass = $pieces[4]");

//Сама функция для работы с базой данных function in_db($db_dt){

$db_server = 'localhost';
$db_name = 'rem_teh_servis';
$db_user = 'rem_teh_site';
$db_password = 'thrtu4hr5u4u';
$dsn = "mysql:host=$db_server;dbname=$db_name;charset=utf8";

// Параметры задают что в качестве ответа получаем ассоциативный массив
$opt = array(
    PDO::ATTR_ERRMODE  => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
);

try { 

    $pdo = new PDO($dsn, $db_user, $db_password, $opt); 

    // Формируем запрос
    $result = $pdo->query($db_dt);

} 
catch (PDOException $e) { die('Подключение не удалось: ' . $e->$db_dt); }

}

Как привести данный код в рабочее состояние? Я уже отчаялся и не знаю даже как задать правильно вопрос

teran
  • 29,377
  • ну так что происходит то? ошибку видите какую-то или не видите, или данные не добавляются или что вообще? Если думаете что с этим кодом что-то не так, то хоть напишите что именно не так – teran Mar 09 '21 at 21:04
  • для начала вам надо изучить синтаксис оператора insert в SQL. Затем освоить подстановку параметров в SQL запрос (оно будет работать и в том виде как у вас написана подставновка прямо в строку, но в общем случаев это чревато, проблемами). Если освоите биндинг параметров, то можно не париться с отсутствующими кавычками в запросое. – teran Mar 09 '21 at 21:07
  • Спасибо, биндинг для меня слово новое, буду изучать, и да при выполнении кода выбивает ошибку "Подключение не удалось" и данные не заносятся в БД – иосиф махарадзе Mar 09 '21 at 21:13
  • так надо использовать сведения об ошибке, а не просто выводить "какая-то ошибка". mysql в исключении возвращает текст ошибки, будет у вас там укзаано, что непонятный синтаксис рядом с set field1 = string value , field2 = что-то еще без кавычек. Вы строки в запрос передаете, но не заключаете их в кавычки. – teran Mar 09 '21 at 21:53
  • в целом у вас должно получиться что-то вроде $st = $pdo->prepare("... set name = ?, surname = ?"); $st->execute($pieces); – teran Mar 09 '21 at 21:54
  • А зачем вообще вот это catch (PDOException $e) { die('Подключение не удалось: ' . $e->$db_dt); }? – Ипатьев Mar 10 '21 at 06:26

0 Answers0