Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Почему ругается на синтаксис SQL? (https://javascript.ru/forum/server/66905-pochemu-rugaetsya-na-sintaksis-sql.html)

DivMan 17.01.2017 04:57

Почему ругается на синтаксис SQL?
 
//@ Для подавления вывода сообщений об ошибках.

////соединение с базой данных

	//Адресс сервера MySQL
	$dblocation = 'localhost';
	//Имя базы данных
	$dbname = 'php';
	//Имя пользователя БД
	$dbuser = 'user';
	//и его пароль
	$dbpasswd = '123';
	
	//Устанавливаем соединение с БД
	
	$dbcnx = @mysql_connect($dblocation, $dbuser, $dbpasswd);
	
	if(!$dbcnx){ //если дескриптор равен 0, соединение не установлено
	
		exit('<p>В настоящий момент сервер базы данных не доступен, '.
			'поэтому корректное отображение страницы невозможно.</p>'
		);
	}
	
	else{
		echo "<p>Соединение установлено</p>";
	}
	
	@mysql_query("SET NAMES 'cp1251'");
	
	

	
	////////////Выбор базый данных 
	
	//mysql_select_db()
	
	if(!@mysql_select_db($dbname, $dbcnx)){
		echo ("<p>БД не доступна</p>");
		exit;
	}
	
	else{
		echo "БД выбрана";
	}
	
	////////выполнение запросов SQL
	
	$query = "CREATE TABLE catalogs (
		id_catalog INT(11) NOT NULL AUTO_INCREMENT,
		name TINYTEXT NOT NULL,
		PRIMARY KEY (id_catalog),
		FULLTEXT KEY `name` (`name`)
	);
	
	INSERT INTO catalogs VALUES (1,'Процессоры');
	INSERT INTO catalogs VALUES (2,'Материнские платы');
	INSERT INTO catalogs VALUES (3,'Видеоадаптеры');
	INSERT INTO catalogs VALUES (4,'Жёсткие диски');
	INSERT INTO catalogs VALUES (5,'Оперативная память');
	";
	
	if(mysql_query($query)){
		echo "Таблица успешно создана";
	}
	
	else{
		exit(mysql_error());

laimas 17.01.2017 05:41

Сперва запрос на создание таблицы и только потом отдельные запросы на запись данных, а не пытаться все кучей в одном запросе. Можно многострочную вставку данных произвести и одним запросом, соответственно подготовив такой запрос.

Ошибки sql-запросов нужно анализировать при отладке и подавлять их вывод на страницах пользователя, но не "собакой", это дурной тон.

В рамках РНР об оригинальном mysql расширении нужно забывать и использовать либо mysqli, либо PDO.

DivMan 18.01.2017 11:48

Я делаю запрос в phpmyadmin

CREATE TABLE catalogs (
id_catalog INT(11) NOT NULL AUTO_INCREMENT,
name TINYTEXT NOT NULL,
PRIMARY KEY (id_catalog),
FULLTEXT KEY `name` (`name`)
);

И почему мне пишет
#1214 - The used table type doesn't support FULLTEXT indexe

laimas 18.01.2017 12:06

CREATE TABLE catalogs (
id_catalog INT(11) NOT NULL AUTO_INCREMENT,
name TINYTEXT NOT NULL,
PRIMARY KEY (id_catalog),
FULLTEXT KEY `name` (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;


Часовой пояс GMT +3, время: 17:07.