myagkikh_evgeniy
@myagkikh_evgeniy

Как исправить ошибку подключения к базе данных mysql?

Всем привет!
Пытаюсь запустить PHP на openserver.
Через phpmyadmin создал БД.
Как только не пробовал, никак не могу получить подключение к базе данных MySQL

<?php
$first_name         = $_POST['firstname'];
$last_name          = $_POST['lastname'];
$when_it_happened  = $_POST['whenithappened'];
$how_long          = $_POST['howlong'];
$how_many          = $_POST['howmany'];
$alien_description = $_POST['aliendescription'];
$what_they_did     = $_POST['whattheydid'];
$fang_spotted      = $_POST['fangspotted'];
$email             = $_POST['email'];
$other             = $_POST['other'];

$dbc = mysqli_connect('127.0.0.1:3306', 'mysql', 'mysql', 'aliendatabase')
    or die ('Ошибка соединения с MySQL - сервером.');

$query = "INSERT INTO aliens_abduction (first_name, last_name, when_it_happened, how_long, " .
    "how_many, alien_description, what_they_did, fang_spotted, other, email) " .
    "VALUES ('$first_name', '$last_name', '$when_it_happened', '$how_long', '$how_many', " .
    "'$alien_description', '$what_they_did', '$fang_spotted', '$other', '$email')";

$result = mysqli_query($dbc, $query) or die ('Ошибка при выполнении запроса к базе данных.');

mysqli_close($dbc);
?>


Всё время возвращает "Ошибка при выполнении запроса к базе данных". Как понять, в чем может быть причина?
  • Вопрос задан
  • 1011 просмотров
Решения вопроса 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Что угодно. Смотрите ошибку в mysqli_error().
Можно предположить, что в одном из вставляемых данных есть одиночная кавычка. Поскольку вы не используете плейсхолдеры или, хотя бы, эскейпинг, то любой спецсимвол в данных может вызвать ошибку.
Ответ написан
Комментировать
kotomyava
@kotomyava
Системный администратор
Во-первых mysqli_error() вернёт вам вашу ошибку, и будет понятно, что не так с запросом.
Во-вторых не используйте mysqli, и не составляйте так запросы - это путь к неизбежным дырам. Есть PDO, подготовленные зарпосы(prepeared statments), и привязка параметров(parameter binding).
Что-то типа такого:
$stmt = $pdo->prepare('SELECT name FROM users WHERE email = :email');
$stmt->execute(array('email' => $email));
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы