Я пытаюсь вставить новую тему, соответствующую папку и таблицу для этой темы, но только оператор создания таблицы не работает, в то время как другие операторы работают очень хорошо. Если я копирую оператор «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>";
}
}
}
2 ответа
Сообщение об ошибке: у вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы найти правильный синтаксис рядом с '
add (id int(8) primary key auto_increment, sub_dir varchar(40) unique)
' в строке 1
ADD
означает {{X1}}.
Но было бы лучше избегать использования зарезервированных слов для имен объектов базы данных или имен выражений в вычислениях.
Используйте {{X0}} (например, хвост). Обычно фиксируйте крайний правый уровень или устанавливайте ноль, если не указано:
См. : Зарезервировано MySQL Слова
Версия PIN-кода: {{X0}}.
Ваш код очень небезопасен и приведет к внедрению sql. Вам нужно использовать mysql_real_escape_string (), чтобы избежать имени вашей таблицы.
Похожие вопросы
Новые вопросы
mysql
MySQL — это бесплатная система управления реляционными базами данных (RDBMS) с открытым исходным кодом, которая использует язык структурированных запросов (SQL). НЕ ИСПОЛЬЗУЙТЕ этот тег для других БД, таких как SQL Server, SQLite и т. д. Это разные БД, которые используют свои собственные диалекты SQL для управления данными. В вопросе всегда указывайте точную версию сервера. Версии 5.x сильно отличаются по своим возможностям от версий 8+.