$ sql и $ result - причина использования обоих? - PullRequest
0 голосов
/ 26 мая 2011

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

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

Ответы [ 3 ]

3 голосов
/ 26 мая 2011

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

Если у вас есть ошибка в строках 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 голосов
/ 26 мая 2011

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

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

2 голосов
/ 26 мая 2011

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

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

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

$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);

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...