Создание таблицы MySql с переменной php в качестве имени - PullRequest
0 голосов
/ 06 мая 2020

Я пытаюсь написать базовую c функцию, создающую таблицу с именем в качестве параметра.

Когда я выполняю функцию, я получаю такую ​​ошибку: «У вас есть ошибка в SQL синтаксис; проверьте руководство, соответствующее вашей версии MySQL сервера, чтобы найти правильный синтаксис для использования рядом с '(id int (10) unsigned NOT NULL AUTO_INCREMENT, nom VARCHAR (255), questio' at line 1 "

Я просмотрел много сообщений на форуме, и похоже, что этот синтаксис работал у некоторых людей, но не у меня! Вот мой код:

function connexion_bd() {
    $serv ="localhost";
    $username = "root";
    $pwd = "blah_blah";
    $bd ="project";
    $connex = mysqli_connect($serv, $username, $pwd, $bd);  
    if (! $connex) {
        page_erreur(ERR_CONNEX, mysqli_connect_error($connex)); exit; 
    }
    return $connex;
}

function creer_jeu_bdd($nom) {
    $connex = connexion_bd();

    $nom = mysqli_real_escape_string($connex,$nom);

    $req = "CREATE TABLE IF NOT EXISTS ".$nom." ( 
        id int(10) unsigned NOT NULL AUTO_INCREMENT,
        nom VARCHAR (255),
        question text NOT NULL,
        reponse1 VARCHAR(256) NOT NULL DEFAULT ``,
        reponse2 VARCHAR(256) NOT NULL DEFAULT ``,
        reponse3 VARCHAR(256) NOT NULL DEFAULT ``,
        bonne_reponse TINYINT(2) UNSIGNED NOT NULL,
        foreign key (nom) references jeux(nom),
        primary key(`id`)
    )ENGINE=InnoDB DEFAULT CHARSET=utf8; ";
    $resultat = mysqli_query($connex, $req);

    if (!$resultat) {
        page_erreur(ERR_REQUETE, mysqli_error($connex)); 
    } elseif (mysqli_num_rows($resultat) > 0) {
        page_erreur(ERR_LOGIN, ''); 
    }
    mysqli_close($connex);
    exit;
}

Большое спасибо.

1 Ответ

0 голосов
/ 06 мая 2020

По умолчанию для вашего varchar должно быть char, поэтому используйте одинарные кавычки и обратные кавычки

Пожалуйста, отметьте Когда использовать одинарные кавычки, двойные кавычки и обратные кавычки в MySQL

 $req = "CREATE TABLE IF NOT EXISTS ".$nom." ( 
        id int(10) unsigned NOT NULL AUTO_INCREMENT,
        nom VARCHAR (255),
        question text NOT NULL,
        reponse1 VARCHAR(256) NOT NULL DEFAULT '',
        reponse2 VARCHAR(256) NOT NULL DEFAULT '',
        reponse3 VARCHAR(256) NOT NULL DEFAULT '',
        bonne_reponse TINYINT(2) UNSIGNED NOT NULL,
        foreign key (nom) references jeux(nom),
        primary key(`id`)
    )ENGINE=InnoDB DEFAULT CHARSET=utf8; ";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...