yerdnaandrey
@yerdnaandrey

В чем ошибка SQL запроса?

$query_1 = "CREATE TABLE info_site(
    forumname varchar(20) NOT NULL,
    color varchar(7) NOT NULL,
    description varchar(25) NOT NULL,
    tags text(3000) NOT NULL,
    domain TEXT(300) NOT NULL
); INSERT INTO info_site ('forumname', 'color', 'description', 'tags', 'domain') VALUES ($forumname, $color, $description, $tags, $domain)
";
$connection_for_info = new mysqli($dns, $name_account, $pswrd_bd, $db);
$connection_for_info->query($query_1);
mysqli_error($connection_for_info);
  • Вопрос задан
  • 146 просмотров
Решения вопроса 1
FanatPHP
@FanatPHP
Чебуратор тега PHP
очень наивно думать что тут ошибка
ошибок тут не одна и не две.

Во-первых, запросы в РНР выполняются по одному, а не все скопом
Во-вторых, и в самых главных, переменные РНР никогда не ставятся в запрос напрмую, а только через символы подстановки.
В-третьих, синтаксис SQL надо знать и соблюдать, а не лепить от балды. И не ставить кавычечки там где они не нужны
В-четвертых, чтобы не гадать "фчём ашыпка", надо попросить РНР чтобы он тебе сам докладывал обо всех ошибках.
В-пятых, чтобы потом не было вопросов "у меня в базе кракозябры", надо при соединении задать кодировку.

Поэтому код переписать так

<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$db = new mysqli($dns, $name_account, $pswrd_bd, $db);
$db->set_charset("utf8mb4");

$query = "CREATE TABLE info_site(
    forumname varchar(20) NOT NULL,
    color varchar(7) NOT NULL,
    description varchar(25) NOT NULL,
    tags text(3000) NOT NULL,
    domain TEXT(300) NOT NULL
)";
$db->query($query);

$query = "INSERT INTO info_site (forumname, color, description, tags, domain) VALUES (?,?,?,?,?)";
$stmt = $db->prepare($query);
$stmt->bind_param("sssss", $forumname, $color, $description, $tags, $domain);
$stmt->execute();
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
cr1gger
@cr1gger
Тупые вопросы порождают тупые ответы (с)
В наименовании колонок должны быть косые черты, либо вообще без них.
В одинарных прямых указывают значения
INSERT INTO `info_site`(`forumname`, `color`, `description`, `tags`, `domain`) VALUES ($forumname, $color, $description, $tags, $domain);
Ответ написан
zabudkin
@zabudkin
Инженер-системотехник, программист, админ, ТПУ!!!!
Вы все тупите :)
у TEXT нет указания количества символов, просто TEXT, без всяких скобок с количеством символов.
Ответ написан
Ваш ответ на вопрос

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

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