[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вывод из БД как избежать ошибок
Страницы: 1, 2
CoopeR
<?php
$tovar = $_GET['pinerov-500']; //гет
$query = sprintf("SELECT `id` FROM `product` //формируем запрос
WHERE `name` = '%s'"
, //%s - заменим на то что в след строчке
mysql_real_escape_string($tovar)); //то что заменим на %s и защита от сами знаете кого
$result = mysql_query($query); //выполняем запрос

if ($result) { //если верно то
echo 'ура есть такой товар и выводм результат':
} else { //если нет то
die('нет такоко товара');
}


_____________
Нажимаю "Мой компьютер"... не моет, сукоо...
Познакомлюсь с девушкой, можно крякнутая версия...
rooor
хрень
Цитата
$query = sprintf

непонятно для чего
Цитата
if ($result) {

при успешном запросе в 0 строк будет true
rooor
а чем такой запрос не подходит?
$res = mysqli_query($conn, " SELECT * FROM `название таблицы` WHERE `название товара` = '" . mysqli_real_escape_string(trim($_GET['название товара'])) ."' LIMIT 1 ");
if(mysqli_num_rows($res) > 0)
{
// товар есть
}
else
{
// нет
}
Иван444
Цитата (rooor @ 17.11.2013 - 12:35)
а чем такой запрос не подходит?
$res = mysqli_query($conn, " SELECT * FROM `название таблицы` WHERE `название товара` = '" . mysqli_real_escape_string(trim($_GET['название товара'])) ."' LIMIT 1 ");
if(mysqli_num_rows($res) > 0)
{
// товар есть
}
else
{
// нет
}

Если в запросе вот сюда $_GET['название товара'] попадет то чего нет в БД будет ошибка правильно?
Guest
Нет, будет то, что вы напишете в else
YVSIK
Главная тема-обрамление всоего кода

хм)) главная тема для всех вновь прибывших
надо крепить как отдельную и тыкать каждого в правилах
обыкновенный скрин, но как правильно все рассатвлено!!
Цитата (ABC @ 17.11.2013 - 10:59)
user posted image

biggrin.gif



_____________
«Гнусное свойство карликовых умов приписывать
________________!свое духовное убожество другим!»
___
О) как-же он прав=>__________________ © Оноре де Бальзак.

отличный хост(рекомендую !! )
My MVC-CMV
Valick
Цитата
будет ошибка потому что негодяй в GET напишет какую нибудь гадость, или я чего то не понимаю?

Вы правы, вы действительно не понимаете.
Если вам пришлют инъекцию для БД, то от этого защита эскейпирование и подготовленные выражения. Цель инъекции изменить запрос таким образом, что бы выполнить действие отличное от задуманного программистом.
А если вместо названия категории "Компьютеры", вас попросят найти в БД "Зайцы", то вам запрос вернет пустоту, т.е. ноль строк. А проверка на пустой результат и вывод соответсвуюшего сообщения - это как воды попить, она просто должна быть в любом случае.
_____
Купите нормальную книгу.


_____________
Стимулятор ~yoomoney - 41001303250491
mvg
Если очень хочется то можно написать тест проверки того, что пришло из вне на соответствие данных используемому в бд алгоритму.
nemezida
непонятно только зачем это делать если mysql_num_rows() после запроса проверит количество строк, и от этого плясать.
Для чего изобретать велосипед то?? все же крайне просто

$_GET['tovar'] = 'Люююююбыее символыыыыы';
//далее для наглядности
$tovar = $_GET['tovar']; // теперь переменная проще пишется :))
//далее делаем эскейпирование

$tovar = mysql_real_escape_string($tovar); // сквозь эту функцию ни кавычки ни проценты ни прочие спец символы не пролезут, соответственно запрос не испортят
//отправляем запрос

$sql = "SELECT * FROM `tovars` WHERE `name`='".$tovar."' LIMIT 1";
$result = mysql_query($sql);
//Запрос отправлен, и теперь всего лишь нужно решить что делать с ответом
//в вашем случае нужно узнать вернулся ли хоть один результат

if(mysql_num_rows($result) > 0)
{
echo 'Yes';
}
else
{
echo 'No result';
}


И на этом ВСЕ, никакой ошибки не будет
dr.nomore
Главное что негодяи кругом. Которые так и норовят внести какую-нибудь гадость в GET полному годяю в программировании.

Запрос к таблице - cats( id cat_id cat_name) - select * from cats where cat_id = 'Тут негодяй вписал чудовищную гадость' ответит: найдено 0 строк.

Никаких ошибок не происходит при отсутствии удовлетворяющих условию кортежей.

Баян.
Иван444
Цитата (nemezida @ 17.11.2013 - 22:04)
непонятно только зачем это делать если mysql_num_rows() после запроса проверит количество строк, и от этого плясать.
Для чего изобретать велосипед то?? все же крайне просто

$_GET['tovar'] = 'Люююююбыее символыыыыы';
//далее для наглядности
$tovar = $_GET['tovar']; // теперь переменная проще пишется :))
//далее делаем эскейпирование

$tovar = mysql_real_escape_string($tovar); // сквозь эту функцию ни кавычки ни проценты ни прочие спец символы не пролезут, соответственно запрос не испортят
//отправляем запрос

$sql = "SELECT * FROM `tovars` WHERE `name`='".$tovar."' LIMIT 1";
$result = mysql_query($sql);
//Запрос отправлен, и теперь всего лишь нужно решить что делать с ответом
//в вашем случае нужно узнать вернулся ли хоть один результат

if(mysql_num_rows($result) > 0)
{
echo 'Yes';
}
else
{
echo 'No result';
}


И на этом ВСЕ, никакой ошибки не будет

Так и сделал!

Всем кто помог большое большое спасибо :)

тема закрыта
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.