Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Правильное написание переменных в запросе

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
alnik-75
Отправлено: 03 Января, 2013 - 00:12:22
Post Id



Посетитель


Покинул форум
Сообщений всего: 338
Дата рег-ции: Сент. 2012  
Откуда: Гродно, Беларусь


Помог: 0 раз(а)




Дорогие форумчане!!! Подскажите, как все же правильно должны указываться переменные в запросе к БД?
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. 1. "SELECT id FROM users WHERE id='$id'"
  3. 2. "SELECT id FROM users WHERE id=$id"
  4. 3. "SELECT id FROM users WHERE id={$id}'"
  5. 4. "SELECT id FROM users WHERE id=".$id
  6.  

Спасибо за помощь!!!!!!!!
 
 Top
Ed
Отправлено: 03 Января, 2013 - 00:32:31
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Дек. 2012  


Помог: 0 раз(а)

[+]


"SELECT `id` FROM `users` WHERE `id`='{$id}'";

Имена таблиц и столбиков рекомендую взять в ``
 
 Top
Саныч Модератор
Отправлено: 03 Января, 2013 - 00:45:04
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


Помог: 62 раз(а)




Первый вариант сработает, но числа заключать в кавычки не нужно! Это я про id. В кавычки заключаются строки.
Третий вариант - ошибка!
Второй и четвертый - все норм. Тут уже больше от стиля вашего зависит. Я, к примеру, использую конкатенацию, а все тело запроса в одинарные кавычки. Это и работает на каплю быстрее, чем поиск в строке, и выглядит как-то получше.
Вобщем ваш пример я бы так записал:
PHP:
скопировать код в буфер обмена
  1. 'SELECT id FROM users WHERE id = ' . $id


Хотя нет Улыбка Скорей всего я б вот так записал:
PHP:
скопировать код в буфер обмена
  1. 'SELECT id FROM users WHERE id = ' . (int) $id
Заодно и защитились.


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
LIME
Отправлено: 03 Января, 2013 - 00:46:47
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




3 не ошибка а просто глупость
 
 Top
Саныч Модератор
Отправлено: 03 Января, 2013 - 00:48:28
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


Помог: 62 раз(а)




LIME, ошибка, ошибка, приглядись...
Но и глупость тоже Улыбка


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
LIME
Отправлено: 03 Января, 2013 - 00:48:38
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




сорь....ошибка
кавычку не приметил
 
 Top
alnik-75
Отправлено: 03 Января, 2013 - 00:52:54
Post Id



Посетитель


Покинул форум
Сообщений всего: 338
Дата рег-ции: Сент. 2012  
Откуда: Гродно, Беларусь


Помог: 0 раз(а)




в 3 варианте я ошибочну одинарную кавычку указал. Переменную id я указал для примера. Переменная может быть и строковой. А для чего указываются обратные кавычки -`?
 
 Top
Саныч Модератор
Отправлено: 03 Января, 2013 - 00:58:05
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


Помог: 62 раз(а)




alnik-75, в mysql есть зарезервированные слова. Использовать их в качестве имен таблиц и столбцов можно, но тогда нужно обрамлять в косые кавычки. Если же вы просто напишите такое слово, получите ошибку.
Поэтому либо заключайте все в кавычки, либо запомните какие слова относятся к зарезирвированным.


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
alnik-75
Отправлено: 03 Января, 2013 - 00:59:49
Post Id



Посетитель


Покинул форум
Сообщений всего: 338
Дата рег-ции: Сент. 2012  
Откуда: Гродно, Беларусь


Помог: 0 раз(а)




Спасибо, Саныч!!!!!!
 
 Top
Muxa
Отправлено: 03 Января, 2013 - 14:49:56
Post Id



Частый гость


Покинул форум
Сообщений всего: 247
Дата рег-ции: Март 2012  
Откуда: Россия, Тверь


Помог: 5 раз(а)




не только зарезервированные слова. Некоторые называют поля в таблице, например с мылом так e-mail
если написать запрос
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT e-mail FROM `users`

то выдаст ошибку, если же написать в апострофах, то будет нормально
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT `e-mail` FROM `users`
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB