Я пытаюсь вставить новую тему, соответствующую папку и таблицу для этой темы, но только оператор создания таблицы не работает, в то время как другие операторы работают очень хорошо. Если я копирую оператор «create table» непосредственно в mysql, то он работает, но сталкивается с проблемой в этом коде.

   if(isset($_GET['Subject'])) {
        $subj = $_GET['subject'];
        $re = "insert into branches(branch) values('$subj')";
        if(!mysql_query($re)) {
            echo "<h3>Dublicate Subject! or Error in inserting data</h3>";
        }
        else {
                mkdir("../$subj");
            $re = "create table $subj (id int(8) primary key auto_increment, sub_dir varchar(40) unique)";
            if(!mysql_query($re)) {
            echo "<h3>Cannot create Table named '$subj' but subject is inserted! First Delete it!</h3>";
                }
        }
    }
1
Sunny Drall 15 Мар 2014 в 07:53

2 ответа

Лучший ответ

Сообщение об ошибке: у вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы найти правильный синтаксис рядом с 'add (id int(8) primary key auto_increment, sub_dir varchar(40) unique)' в строке 1

ADD означает {{X1}}.

Но было бы лучше избегать использования зарезервированных слов для имен объектов базы данных или имен выражений в вычислениях.

Используйте {{X0}} (например, хвост). Обычно фиксируйте крайний правый уровень или устанавливайте ноль, если не указано:

См. : Зарезервировано MySQL Слова

1
Ravinder Reddy 15 Мар 2014 в 04:20

Версия PIN-кода: {{X0}}.

Ваш код очень небезопасен и приведет к внедрению sql. Вам нужно использовать mysql_real_escape_string (), чтобы избежать имени вашей таблицы.

0
fabspro 15 Мар 2014 в 04:31