SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 08.12.2020 14:15:51

ANDREY1
Участник
Зарегистрирован: 08.12.2020
Сообщений: 16

Что за ошибка в создании таблицы?

Сразу скажу, я новичок, критиковать мой вопрос можно долго.


mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$set = new mysqli($dns, $name_account, $pswrd_bd, $db);
$set->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
);
CREATE TABLE users(
    user varchar(30) NOT NULL,
    description varchar(40) NOT NULL,
    id int(11) NOT NULL AUTO_INCREMENT,
    avatar TEXT(300) NOT NULL,
    likes TEXT(20) NOT NULL,
    pswrd varchar(32) NOT NULL,
    email TEXT(300) NOT NULL,
    deleted varchar(5) NOT NULL,
    name_id varchar(32) NOT NULL
)"
;
$set->query($query);

$query = "INSERT INTO info_site (forumname, color, description, tags, domain) VALUES (?,?,?,?,?)";
$stmt = $set->prepare($query);
$stmt->bind_param("sssss", $forumname, $color, $description, $tags, $domain);
$stmt->execute();

 

и возникает такая ошибка:
Fatal error: Uncaught mysqli_sql_exception: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CREATE TABLE users( user varchar(30) NOT NULL, description varchar(40)' at line 8 in C:\OpenServer\domains\OpenBB\admin0.php:164 Stack trace: #0 C:\OpenServer\domains\OpenBB\admin0.php(164): mysqli->query() #1 {main} thrown in C:\OpenServer\domains\OpenBB\admin0.php on line 164

Неактивен

 

#2 08.12.2020 14:41:57

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5827

Re: Что за ошибка в создании таблицы?

пытаетесь выполнить 2 запроса как 1
mysqli_query выполняет только 1 запрос
для нескольких нужно использовать mysqli_multi_query

Неактивен

 

#3 08.12.2020 14:48:54

ANDREY1
Участник
Зарегистрирован: 08.12.2020
Сообщений: 16

Re: Что за ошибка в создании таблицы?

vasya написал:

пытаетесь выполнить 2 запроса как 1
mysqli_query выполняет только 1 запрос
для нескольких нужно использовать mysqli_multi_query

я попробовал заменить

$set->query($query);
на 
$set->multi_query($query);
, но php вернул ту же ошибку

Отредактированно ANDREY1 (08.12.2020 14:49:24)

Неактивен

 

#4 08.12.2020 15:17:29

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5827

Re: Что за ошибка в создании таблицы?

Странно.
У вас ошибка в коде создания второй таблицы: указано AUTO_INCREMENT, но отсутствует primary key. Но это должно привести к иной ошибке.
Какая версия mysql?
Если создавать каждую таблицу отдельным mysqli_query будет ошибка?

Неактивен

 

#5 08.12.2020 21:28:04

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2419

Re: Что за ошибка в создании таблицы?

Я еще посоветовал бы в дополнение - выполнять эти запросы по одному. так Вам будет проще отлаживать


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#6 09.12.2020 09:52:12

ANDREY1
Участник
Зарегистрирован: 08.12.2020
Сообщений: 16

Re: Что за ошибка в создании таблицы?

deadka написал:

Я еще посоветовал бы в дополнение - выполнять эти запросы по одному. так Вам будет проще отлаживать

ок)

Неактивен

 

#7 10.12.2020 13:35:38

ANDREY1
Участник
Зарегистрирован: 08.12.2020
Сообщений: 16

Re: Что за ошибка в создании таблицы?

hmm


mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$dbs = new mysqli($dns, $name_account, $pswrd_bd, $db);
$dbs->set_charset("utf8mb4");
$query1 = "CREATE TABLE likes(
    post_id int(11) NOT NULL,
    user varchar(40) NOT NULL,
    like varchar(5) NOT NULL
)"
;
$dbs->query($query1);
$dbs->close();
 


Fatal error: Uncaught mysqli_sql_exception: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'like varchar(5) NOT NULL )' at line 4 in C:\OpenServer\domains\OpenBB\admin0.php:151 Stack trace: #0 C:\OpenServer\domains\OpenBB\admin0.php(151): mysqli->query() #1 {main} thrown in C:\OpenServer\domains\OpenBB\admin0.php on line 151

Неактивен

 

#8 10.12.2020 13:39:33

ANDREY1
Участник
Зарегистрирован: 08.12.2020
Сообщений: 16

Re: Что за ошибка в создании таблицы?

mysqlnd 7.4.5

Неактивен

 

#9 10.12.2020 13:59:46

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2419

Re: Что за ошибка в создании таблицы?

like - ключевое слово mysql. В любом случае это очень порочная практика использовать ключевые слова в качестве имен полей. Если кровь из носу надо - замените
like
на
`like`, но, повторюсь, не стоит. Лучше is_liked, count_of_likes или чего у Вас там по логике должно храниться.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#10 10.12.2020 14:46:15

ANDREY1
Участник
Зарегистрирован: 08.12.2020
Сообщений: 16

Re: Что за ошибка в создании таблицы?

deadka написал:

like - ключевое слово mysql. В любом случае это очень порочная практика использовать ключевые слова в качестве имен полей. Если кровь из носу надо - замените
like
на
`like`, но, повторюсь, не стоит. Лучше is_liked, count_of_likes или чего у Вас там по логике должно храниться.

Ок, спасибо за помощь

Неактивен

 

#11 10.12.2020 14:50:43

ANDREY1
Участник
Зарегистрирован: 08.12.2020
Сообщений: 16

Re: Что за ошибка в создании таблицы?

вот только когда объединяю эти два запроса в единый, создается только первая таблица.


mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$dbs = new mysqli($dns, $name_account, $pswrd_bd, $db);
$dbs->set_charset("utf8mb4");
$query1 = "CREATE TABLE likes(
    post_id int(11) NOT NULL,
    user varchar(40) NOT NULL,
    like_count varchar(5) NOT NULL
);CREATE TABLE users(
    user varchar(30) NOT NULL,
    description varchar(40) NOT NULL,
    id int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
    avatar TEXT(300) NOT NULL,
    likes TEXT(20) NOT NULL,
    pswrd varchar(32) NOT NULL,
    email TEXT(300) NOT NULL,
    deleted varchar(5) NOT NULL,
    name_id varchar(32) NOT NULL,
    PRIMARY KEY (id)
)"
;
$dbs->multi_query($query1);
$dbs->close();
 

Неактивен

 

#12 10.12.2020 15:00:43

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5827

Re: Что за ошибка в создании таблицы?

дважды указали primary key во второй таблице
стоит писать ошибку, так легче понять причину

Неактивен

 

#13 10.12.2020 16:07:52

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2419

Re: Что за ошибка в создании таблицы?

Еще раз smile

Я еще посоветовал бы в дополнение - выполнять эти запросы по одному. так Вам будет проще отлаживать


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#14 10.12.2020 19:00:36

ANDREY1
Участник
Зарегистрирован: 08.12.2020
Сообщений: 16

Re: Что за ошибка в создании таблицы?

deadka написал:

Еще раз smile

Я еще посоветовал бы в дополнение - выполнять эти запросы по одному. так Вам будет проще отлаживать

типо так?


mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$dbs = new mysqli($dns, $name_account, $pswrd_bd, $db);
$dbs->set_charset("utf8mb4");
$query1 = "CREATE TABLE likes(
    post_id int(11) NOT NULL,
    user varchar(40) NOT NULL,
    like_count varchar(5) NOT NULL
);"
;
$dbs->query($query1);
$dbs->close();

$dbs = new mysqli($dns, $name_account, $pswrd_bd, $db);
$dbs->set_charset("utf8mb4");
$query2 = "CREATE TABLE users(
    user varchar(30) NOT NULL,
    description varchar(40) NOT NULL,
    id int(11) NOT NULL AUTO_INCREMENT,
    avatar TEXT(300) NOT NULL,
    likes TEXT(20) NOT NULL,
    pswrd varchar(32) NOT NULL,
    email TEXT(300) NOT NULL,
    deleted varchar(5) NOT NULL,
    name_id varchar(32) NOT NULL,
    PRIMARY KEY (id)
)"
;
$dbs->query($query1);
$dbs->close();
 

все равно не робит

Неактивен

 

#15 10.12.2020 19:50:02

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2419

Re: Что за ошибка в создании таблицы?

$query2 = "CREATE TABLE users(
    user varchar(30) NOT NULL,
    description varchar(40) NOT NULL,
    id int(11) NOT NULL AUTO_INCREMENT,
    avatar TEXT(300) NOT NULL,
    likes TEXT(20) NOT NULL,
    pswrd varchar(32) NOT NULL,
    email TEXT(300) NOT NULL,
    deleted varchar(5) NOT NULL,
    name_id varchar(32) NOT NULL,
    PRIMARY KEY (id)
)";
$dbs->query($query1);

зачем заполнять переменную
$query2
, а потом выполнять
$dbs->query($query1);
?

замените
$dbs->query($query1);
на
$dbs->query($query2);


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#16 10.12.2020 19:50:43

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2419

Re: Что за ошибка в создании таблицы?

и
TEXT(300)
лучше замените на varchar(300)


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#17 10.12.2020 20:05:59

ANDREY1
Участник
Зарегистрирован: 08.12.2020
Сообщений: 16

Re: Что за ошибка в создании таблицы?

deadka написал:

и
TEXT(300)
лучше замените на varchar(300)

С этой проблемой разобрался раньше вашего решения, но все равно спасибо. Я очень туплю

Неактивен

 

#18 10.12.2020 20:09:18

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2419

Re: Что за ошибка в создании таблицы?

Ок, сейчас все решено или что-то осталось?


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#19 22.12.2020 21:17:56

ANDREY1
Участник
Зарегистрирован: 08.12.2020
Сообщений: 16

Re: Что за ошибка в создании таблицы?

deadka написал:

Ок, сейчас все решено или что-то осталось?

все решил, спасибо за помощь

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson