Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: MySQL 5.1 - испльзование обратных кавычек
 
 автор: Night_Phantom   (07.01.2008 в 17:06)   письмо автору
 
 

начал читать книгу "mysql 5 наиболее полное руководство".
в одной главе, описывающей взаимодействие mysql c php, меня удивил один момент:
там описывается синтаксис запроса:

$cat = mysql_query("SELECT name FROM catalogs WHERE id_catalog = 1");

хотя в таком виде запрос будет работать в mysql 4, но в 5 не работает.
в 5 используют:

$cat = mysql_query("SELECT `name` FROM `catalogs` WHERE `id_catalog` = 1");


дак вот почему в книге написаной для mysql 5 описывается не правильный синтаксис?
или может я что-то не правильно понимаю?

   
 
 автор: cheops   (07.01.2008 в 17:36)   письмо автору
 
   для: Night_Phantom   (07.01.2008 в 17:06)
 

Немного не так - оба запроса прекрасно выполнятся как в MySQL версии 5, так и в более ранних версиях. Обратные кавычки были введены, для того, чтобы можно было использовать в качестве имени столбца зарезервированные имена. Например, если вы напишите
SELECT SELECT FROM TABLE

анализатор не сможет разобрать такой запрос, ни в MySQL 5, ни в более ранних версиях, однако, если зарезервированные имена будут заключены в обратные кавычки - запрос будет обработан
SELECT `SELECT` FROM `TABLE`

Обратные кавычки обязательны только для зарезервированных слов - все остальные имена можно использовать без них.

PS Сами обратные кавычки были введены задолго до версии 4.0.

   
 
 автор: Night_Phantom   (07.01.2008 в 17:55)   письмо автору
 
   для: cheops   (07.01.2008 в 17:36)
 

спасибо, буду знать.

но почему-то когда я не использую обратные ковычки запрос не выполняется. зарезервированных имена и не использую

   
 
 автор: cheops   (07.01.2008 в 19:00)   письмо автору
 
   для: Night_Phantom   (07.01.2008 в 17:55)
 

1) Прикрепите пожалуйста файл my.ini - что в нём (возможно включён какой-то специфичный SQL-режим)?
2) Версия MySQL какая используется (до третьего знака)?

   
 
 автор: Night_Phantom   (07.01.2008 в 20:13)   письмо автору
 
   для: cheops   (07.01.2008 в 19:00)
 

могу только сказать, что это версия 5.1 :)
всё остальное нужно просить у компании, чьими услугами по хостингу я пользуюсь.
по этому прикрепить файл my.ini нет возможности.

   
 
 автор: cheops   (07.01.2008 в 20:33)   письмо автору
 
   для: Night_Phantom   (07.01.2008 в 20:13)
 

Хм... вообще-то 5.1 не является пока стабильным релизом и не рекомендована для использования на рабочих серверах (хотя находится в стадии Release Candidate и очень близка к релизу). Попробуйте извлечь SQL-режим при помощи запроса
show variables like '%sql_mode%';

Что возвращает запрос?

   
 
 автор: Night_Phantom   (07.01.2008 в 21:02)   письмо автору
 
   для: cheops   (07.01.2008 в 20:33)
 

у меня видимо не достаточно знаний, чтобы сообразить как создать этот запрос.
сделал так:

print(mysql_query("show variables like '%sql_mode%'"));

получилось это: Resource id #4
но думаю, что это вовсе не то, что надо :)

   
 
 автор: Trianon   (07.01.2008 в 21:48)   письмо автору
 
   для: Night_Phantom   (07.01.2008 в 21:02)
 

Вообще-то предлагалось исполнить этот запрос в чем-то вроде phpMyAdmin (закладка Select)
В php же (если Вы хотите забрать результат в массив) нужно будет написать что-то вроде


$res = mysql_query("show variables like '%sql_mode%'"); 
for($rows = array(); $row = mysql_fetch_assoc($res); $rows[] = $row);
print_r($rows);

   
 
 автор: Night_Phantom   (07.01.2008 в 22:36)   письмо автору
 
   для: Trianon   (07.01.2008 в 21:48)
 

выдает пустое значение
---------------------------------
Variable_name | Value
---------------------------------
....sql_mode......|.............

   
 
 автор: cheops   (08.01.2008 в 14:30)   письмо автору
 
   для: Night_Phantom   (07.01.2008 в 22:36)
 

Хм... значит SQL-режимов нет... странно, а как выглядит запрос на добавление таблицы CREATE TABLE?

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования