@Vladislav-Argun

Как исправить ошибку MySQL "Fatal error...?

Доброго времени суток. Я столкнулся с проблемой. После ввода mysqli_query(..., ...), выдало след. ошибку. С чем это может быть связано, и как её исправить?
Fatal error: Uncaught mysqli_sql_exception: Unknown column 'tel' in 'field list' in C:\OpenServer\domains\localhost\check.php:28 Stack trace: #0 C:\OpenServer\domains\localhost\check.php(28): mysqli_query(Object(mysqli), 'INSERT INTO `ca...') #1 {main} thrown in C:\OpenServer\domains\localhost\check.php on line 28
PHP Код ниже:
if(isset($_POST['submit'])){
        $link=new mysqli("localhost", "root", "root", "data");
        $link->set_charset('utf-8');
        ini_set('display_errors',1);
        error_reporting(E_ALL);
        mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
        $subject = $_POST['subject'];
        $title = $_POST['title'];
        $name = $_POST['name'];
        $email = $_POST['email'];
        $p = $_POST['p'];
        $tel = $_POST['tel'];
        $subject = (int) $subject;
        $money = $_POST['money'];
        if ($subject == 1){
            $subject = 'Одноразовый заказ';
        } elseif ($subject == 2){
            $subject = 'Вакансия';
        };
        $a = "Subject: ".$subject." Title: ".$title." Name: ".$name." E-Mail: ".$email." P: ".$p." tel: ".$tel." ";
        echo $a;
        $result = "INSERT INTO `cards` (`name`, `title`, `p`, `tel`, `email`, `money`, `subject`) VALUES ('$name', '$title', '$p', '$tel', '$email', '$money', '$subject'";
        if (!$result){
            die('Ошибка: '.mysqli_error());
        } else {
            mysqli_query($link, $result);
        };
    };
  • Вопрос задан
  • 1482 просмотра
Решения вопроса 1
ThunderCat
@ThunderCat Куратор тега MySQL
{PHP, MySql, HTML, JS, CSS} developer
Когда ты НЕ ЗНАЕШЬ что происходит у тебя в коде, во первых надо понять что и зачем ты пишешь, иначе это обезьянье тыканье в клавиатуру ни к чему не приведет в обозримом будущем. Прогресса не будет.
Во первых - запросы выделить отдельно в переменные.
Во вторых - вместо тупого "вставляния" переменных в запрос использовать плейсхолдеры, иначе будете страдать, и за дело. Разве так сложно все нужные параметры записать в массив ключ-значение и передать в запрос???
В третьих - читать ошибки, понимать синтаксис. В идеале - нормально расписывать запрос в коде. Хотя я рекомендую всегда его писать в принятом построчном формате, это всегда удобно и наглядно:
$sql = "
INSERT INTO `cards` 
(`name`, `title`, `p`, `tel`,`email`, `money`, `subject`) 
VALUES 
(:name,  :title,  :p,  :tel,  :email,   :money,  :subject";
Надеюсь ошибка видна?
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
part_os
@part_os
Сложное в простом
Выведите переменную $result и увидите все. Можете попробовать выполнить полученный запрос в консоли.
Ответ написан
Ваш ответ на вопрос

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

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