Запрос INSERT не проходит в базу

$cf = array('db'=>array('host'=>'127.0.0.1','database'=>'database','user'=>'root','password'=>''));
try {
    $host = $cf['db']['host'];
    $db = $cf['db']['database'];
    $user = $cf['db']['user'];
    $pass = $cf['db']['password'];
    $dbn = new PDO("mysql:host=$host;dbname=$db", $user, $pass);
} catch (PDOException $e) {
    print "Error!: " . $e->getMessage();
    die();
}


$add = $dbn->prepare("INSERT INTO `ep_profiles` (`login`,`password`,`email`) VALUES (?,?,?)");
$add->execute(array($_GET['login'],crypt($_GET['password'], '$5$rounds=5000$usesomesillystringforsalt$'),$_GET['email']));

Итак, проблема в следующем: запросы INSERT не проходят в базу, хотя допустим SELECT вполне себе работает. Параметры подключения в норме, необходимые права доступа есть.


Ответы (2 шт):

Автор решения: Алексей Шиманский

Синтаксис INSERT таков:

INSERT INTO tbl_name (column1, column2) VALUES(value1, value2);

У вас же он от UPDATE


Доки: https://dev.mysql.com/doc/refman/8.0/en/insert.html

→ Ссылка
Автор решения: Fire Nick

Смотрите в чем проблема: необходимо правильно составить подключение, причем так, чтобы ошибки в случае чего выводились, итак, как это сделать?

try {
    $host = $cf['db']['host'];
    $db = $cf['db']['database'];
    $user = $cf['db']['user'];
    $pass = $cf['db']['password'];

    $options = [
        PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
        PDO::ATTR_EMULATE_PREPARES   => false,
    ];

    $dbn = new PDO("mysql:host=$host;dbname=$db;charset=utf8mb4", $user, $pass, $options);
} catch (PDOException $e) {
    print "Error!: " . $e->getMessage();
    die();
}

Нас интересует только $options, который мы так же добавляем как параметр подключения.

→ Ссылка