Skip to content

Instantly share code, notes, and snippets.

@mol4anovma
Created February 10, 2017 09:14
Show Gist options
  • Save mol4anovma/245b1e0063b6accff710286f05763ae7 to your computer and use it in GitHub Desktop.
Save mol4anovma/245b1e0063b6accff710286f05763ae7 to your computer and use it in GitHub Desktop.
Вопрос 2
<?php
//Что плохого в каждом из этих двух кусков кода?
//Первый:
$sql = "SELECT * FROM banners WHERE status_ban != 'Del'";
$result = mysql_query($sql, $con) or die (mysql_error());
$count = mysql_num_rows($result);
//Примечание: $result более нигде не используется.
//Второй:
$sql = "SELECT * FROM articles WHERE status_art!='Del' and id_art=" . $_GET['nId'];
$result = mysql_query($sql, $con) or die (mysql_error());
//ПЕРВОЕ:
//Функции mysql_query()б mysql_error(), mysql_num_rows() считаются устаревшими в PHP 5.4 и удалены с PHP 5.6
//ВТОРОЕ:
//Для определения кол-ва строк в базе данных, удовлетворяющих условию, не стоит получать все строки.
//Т.е. запрос может быть такой:
$sql = "SELECT COUNT(status_ban) FROM banners WHERE status_ban != 'Del'";
$answer = mysqli_fetch_array(mysqli_query($con, $sql));
$count = (is_array($answer)) ? reset($answer) : null; //Ну или вернуть false
//Лучше конечно подсчитать кол-во ID (первичных ключей, они кэшированы в базе),
//но я не знаю, есть ли они в данном случае.
//Вторая часть кода так же не содержит проверки GET параметра и возвращает неотформатированный вывод из базы
//вариант:
$sql = "SELECT * FROM articles WHERE status_art != 'Del' and id_art = " . (int)filter_input(INPUT_GET, "nId");
$answer = mysqli_query($sql, $con) or die (mysqli_error());
$result = mysqli_fetch_array($answer);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment