$ sql и $ result — Причина использования обоих?

#php #sql #variables #performance

#php #sql #переменные #Производительность

Вопрос:

Просто пытаюсь повысить эффективность моего кода, поэтому простой вопрос:

Я вижу, что довольно часто люди объявляют свой SQL-запрос, используя один var ($ sql), а затем помещают результат в другой ($ result). Есть ли какая-либо причина, по которой люди делают это, кроме того, что они делают вещи немного аккуратнее? Я полагаю, что немного лучше просто поместить SQL-запрос прямо в mysql_query(). Но может быть какая-то другая причина, по которой люди скрывают.

Комментарии:

1. SQL-запросы обычно довольно длинные, поэтому немного удобнее сначала сохранить их в переменной, а затем передать в mysql_query() .

Ответ №1:

Обычно это упрощает отладку по ходу работы: если по какой-либо причине с SQL-запросом что-то не так, вы можете просто распечатать содержимое $sql переменной.

Кроме того, содержимое SQL-запросов может быть довольно длинным, и это выглядит довольно нечитаемым, если оно находится внутри вызова функции после определенной длины.

Ответ №2:

Ну, это приводит к более чистому кодированию, если есть ошибка.

Если у вас ошибка в строках 151 и 151 является:

 mysql_fetch_array(mysql_query("SELECT * FROM something")); //where is the error
  

Тогда это гораздо сложнее прочитать:

Ошибка в строке 150 и строках 149 — 151:

 $sql = "SELECT * FROM something";
$result = mysql_query($sql); // ahh the error is here
mysql_fetch_array($result);
  

Ответ №3:

В этом нет ничего волшебного. Помещение вашего SQL в переменную имеет много преимуществ и очень мало недостатков; то же самое нельзя сказать о передаче вашего SQL-запроса непосредственно в mysql_query функцию.

Для начала … вы используете mysql_query напрямую? Большинство разработчиков собираются встроить такие функции в какой-либо объект / контроллер базы данных, или они собираются использовать PDO или тому подобное. В любом случае, помещение SQL в переменную позволяет вам легко заменить то, в что вы передаете SQL. Когда я обновляю код для переключения методологии доступа к базе данных, становится проще, если я меняю строку на mysql_query($sql) вместо mysql_query('SELECT .... SUPER LONG QUERY ...') .

При отладке можно просто echo($sql) . Если кто-то хочет выполнить запрос count отдельно от запроса data:

 $sql = ' FROM table_name WHERE `some_field` = 1';
$count = db::getField('SELECT COUNT(`id`) '.$sql);
$page_worth = db::getRows('SELECT `id`, `name` '.$sql.' LIMIT '.$page.', '.$per_page);
  

И так далее, и тому подобное. Это действительно сводится к предпочтениям, но я нахожу этот подход гораздо более гибким и быстро адаптируемым / отлаживаемым.