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
Форумы портала PHP.SU :: Версия для печати :: Стиль выполнения запросов
Форумы портала PHP.SU » PHP » SQL и Архитектура БД » Стиль выполнения запросов

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

1. Maksim337 - 08 Ноября, 2009 - 18:18:39 - перейти к сообщению
Встречал в разных php скриптах на mysql разные построения запросов.
PHP:
скопировать код в буфер обмена
  1. mysql_query("SELECT `per_start`,`perexod` FROM `users` WHERE `usr` = '".mysql_real_escape_string($_GET['usr'])."'")

Где и как используються двойные, одиничные кавычки и ` ?
Например так тоже видел?
PHP:
скопировать код в буфер обмена
  1. mysql_query(" SELECT * FROM table WHERE name='$name'")

Дак скажите пожалуйста как правильно чем пользоваться? И что лучше работать будет?
2. Ch_chov - 08 Ноября, 2009 - 18:30:18 - перейти к сообщению
http://www.phpfaq[dot]ru/slashes
3. valenok - 09 Ноября, 2009 - 10:01:47 - перейти к сообщению
название полей и таблиц заключать в апострофы `table`.`field`
названия функций и ключевых слов писать большими буквами WHERE NOW() < `field`
строки заключать в одинарные кавычки `field` = 'myvalue'
4. Мелкий - 09 Ноября, 2009 - 15:12:17 - перейти к сообщению
valenok пишет:
названия функций и ключевых слов писать большими буквами WHERE NOW() < `field`

А не подскажете, зачем? мускул на регистр внимания не обращает, вроде, а капсятина эта некрасиво выглядит...
5. Viper - 09 Ноября, 2009 - 15:15:25 - перейти к сообщению
Мелкий пишет:
А не подскажете, зачем? мускул на регистр внимания не обращает, вроде, а капсятина эта некрасиво выглядит...


форматирование кода. когда у вас пару тысяч строк кода в одно файле, вы замучаетесь искать запрос.
6. Мелкий - 09 Ноября, 2009 - 15:23:37 - перейти к сообщению
Пробовал на тысяче строк кода в одном файле - проблема только в том, чтобы понять, как оно вообще вертится... Запросы видно сразу, путаюсь только если они в блоке довольно тесто расположены.

В общем, глобального смысла, как с ассоциативными массивами (то что ключи в кавычки брать надо), нету. Простое форматирование кода, так же как и перенос скобок {}
7. Maksim337 - 09 Ноября, 2009 - 21:39:40 - перейти к сообщению
Ch_chov хорошая статья а я на нее не натыкалсяУлыбка спасибо большое...
8. Maksim337 - 10 Ноября, 2009 - 20:18:54 - перейти к сообщению
Подскажите как правильно оформить выборку из многих таблиц.... Что-то типа того
PHP:
скопировать код в буфер обмена
  1. SELECT `name`.`user`, `surname`.`user`, `money`.`market` FROM `user`, `market` WHERE `id`='$_POST[id]'

Если я правильно понял такое можно вообще, и как это все в функцию mysql_query закатать?
9. Enjoy - 10 Ноября, 2009 - 22:40:34 - перейти к сообщению
Мелкий пишет:
В общем, глобального смысла, как с ассоциативными массивами (то что ключи в кавычки брать надо), нету.

Не понял, можно пример такого случая?

Maksim337 пишет:
Подскажите как правильно оформить выборку из многих таблиц.... Что-то типа того
SELECT `name`.`user`, `surname`.`user`, `money`.`market` FROM `user`, `market` WHERE `id`='$_POST[id]'
Если я правильно понял такое можно вообще, и как это все в функцию mysql_query закатать?

Сначала указываются имена таблиц, а потом полей - user.name
10. Maksim337 - 10 Ноября, 2009 - 23:01:21 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $select="SELECT `table`.`dom`, `table`.`halabuda`, `table2`.`dom`,`table2`.`halabuda` FROM `b` AS `table`,`o` AS `table2` WHERE `country`='$country'";
  2. $resource=mysql_query($select);
  3. $data=mysql_fetch_assoc($resource);


Выдает такую ошибку


Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in M:\home\localhost\www\Tests\subdomain.localhost\buildings\Untitled-16.php on line 15

Тоесть выборка из базы не происходит... Что не так?
11. valenok - 11 Ноября, 2009 - 08:12:28 - перейти к сообщению
Отсутсвует отладка.
с.м. http://phpfaq[dot]ru/debug
12. Maksim337 - 11 Ноября, 2009 - 09:53:13 - перейти к сообщению
valenok отладка это конечно замечательно, но если я и так знаю где ошибка, и прошу посмотреть правильно составления запроса. так как я в этом новенький. А ошибка в том что в условии тоже нужно через псевдонимы работать...
(Добавление)
CODE (text):
скопировать код в буфер обмена
  1. SELECT `t`.`dom`, `t`.`halabuda`, `t2`.`dom_n`,`t2`.`halabuda_n` FROM `b` AS `t`,`o` AS `t2` WHERE `t2`.`country`='Petya'
  2. Array
  3. (
  4.     [dom] => domina
  5.     [halabuda] => halupa
  6.     [dom_n] => 10
  7.     [halabuda_n] => 10
  8. )
  9.  

Вот теперь все работаетУлыбка
Всем спасибо за внимание и помощь Ch_chov,valenok,Enjoy!
Кстати потом выскочила такая проблема что выводилось только [dom] => 10
[halabuda] => 10 просто одинаковые имена полей и заменялось на последнее... Ну нужно было изменить имена полей. Может такая проблема multi-select`a еще у кого-то будет. Надеюсь эта тема кому-то поможетУлыбка
13. valenok - 11 Ноября, 2009 - 20:09:54 - перейти к сообщению
Само собой понятно где ошибка в php коде.
Только если язык вдруг меняется с php на mysql это не значит что конец отладке и дальше прибегнуть к магии. SQL запрос тоже нужно отлаживать если он не работает.
14. Maksim337 - 12 Ноября, 2009 - 17:38:26 - перейти к сообщению
Новый вопрос появился, делаю выборку из трех таблиц одним SELECT . Таблицы небольшие по 5 полей примерно. Так вот вопрос может сделать три селекта отдельных ? Нагрузка и скорость выполнения где больше?

 

Powered by ExBB FM 1.0 RC1