[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проверка существования записи в базе
AntiGID
Есть функция которая запрашивает из базы запись с id равным $id. Как проверить есть ли в базе запись с таким ID или нет? Заранее спасибо.



Спустя 15 минут, 1 секунда (22.09.2010 - 18:35) Dingo написал(а):
AntiGID
все просто
function exist_db_id ($db , $id = null)
{
//Защита от инъекции
intval($id);
//Собственно сам запрос
$sql = "SELECT * FROM `" . $db . "` WHERE `id` = '" . $id . "' LIMIT 1";
$result = mysql_query($sql) or die(mysql_error());
if ($result)
{
// если существует запись то возвращаем истину иначе ложь
if (mysql_num_rows($result) == 1)
{
return true;
}
}

return false;
}


Спустя 17 минут, 4 секунды (22.09.2010 - 18:52) inpost написал(а):
Dingo
Как криво.
В функции уже будет $id = null, и зачем тогда её проводить на intval? К тому же который в 2,3 раза медленнее обычного (int)??
Проверять на успешний результат, чтоб потом проверить количество колонок? Вообще извращение =)

AntiGID
$result = mysql_query("SELECT null FROM `table` WHERE `id`='".(int)$id."' LIMIT 1");
if (mysql_num_rows($result) > 0)
{
echo "Такой id уже есть";
}

Спустя 8 минут, 41 секунда (22.09.2010 - 19:00) Dingo написал(а):
inpost у тебя как раз очень криво, существует множество реализации, и кстати каждый выбирает сам? использовать (int) или intval().

И да, я же дал пример готовой функции, где надо указать только таблицу и id.

Спустя 3 минуты, 23 секунды (22.09.2010 - 19:04) inpost написал(а):
Dingo
"-Ты дурак, - нет, сам дурак", странный ты однако человек. Ты тут хочешь показать, на сколько ты крутой? Знаешь, по тебе это не видно. Поучился бы сначала сам, а уже потом учил других. Твои ответы смахивают на уроки Попова, он тоже много чего лишнего постоянно делал.

Спустя 5 минут, 21 секунда (22.09.2010 - 19:09) Dingo написал(а):
inpost я признаю что лишне проверять $result так как я выше сделал данную строчку
$result = mysql_query($sql) or die(mysql_Error());

. максимум я бы переболтал так

function exist_db_id ($db , $id = null)
{
intval ($id);
$sql = "SELECT COUNT(*) FROM `" . $db . "` WHERE `id` = '" . $id . "' LIMIT 1";
if ($result = mysql_query($sql))
return (mysql_result($result,0) > 1) ? true : false;
}


Цитата
Ты тут хочешь показать, на сколько ты крутой?

я пытался помочь человеку..... всего то

Спустя 5 минут (22.09.2010 - 19:14) Kuliev написал(а):
Dingo
Из за одного запроса целую функцию городить ( смысл )? blink.gif

Спустя 2 минуты, 38 секунд (22.09.2010 - 19:17) inpost написал(а):
Dingo
Если и делать COUNT, то лучше COUNT(id), не зачем брать всю строку из БД, это будет нагрузка больше.
Запусти тест и проверь скорость работы intval и int. Попов учил меня делать intval, и неделю назад решил через microtime проверить, что эфективнее... И когда результат более чем в 2 раза лучше int - то ответ очевиден, что лучше в данном случае использовать.

Спустя 40 секунд (22.09.2010 - 19:18) Dingo написал(а):
Kuliev а если нужно несколько раз проверить, если один раз то можно и без функции smile.gif Я ведь не навязываю свое мнение, не говорю что как сделал inpost это плохо.... я за демократию...

Спустя 1 минута, 16 секунд (22.09.2010 - 19:19) inpost написал(а):
Dingo
Я не критиковал функцию, я не критиковал все остальное, я корректировал твой пост, указывал места, где ошибки.

Если ты так будешь злостно реагировать, тебе врядли будут в дальнейшем помогать!

Спустя 1 минута, 23 секунды (22.09.2010 - 19:20) Dingo написал(а):
Цитата (inpost @ 22.09.2010 - 16:17)
Если и делать COUNT, то лучше COUNT(id), не зачем брать всю строку из БД, это будет нагрузка больше.
Запусти тест и проверь скорость работы intval и int. Попов учил меня делать intval, и неделю назад решил через microtime проверить, что эфективнее... И когда результат более чем в 2 раза лучше int - то ответ очевиден, что лучше в данном случае использовать.

тебе что девушка не дала? я просто выложил код я не претендую на нобелевскую... я пока относительно спокоен, а знаешь как хочется тебя послать "науйх".
Цитата
Если ты так будешь злостно реагировать, тебе врядли будут в дальнейшем помогать!

laugh.gif а она мне нужна, я реально сюда лишь прихожу за советом, так как в основном все проблемы решаемы другим подходом или гуглом.

Спустя 44 секунды (22.09.2010 - 19:21) Kuliev написал(а):
Цитата (Dingo @ 22.09.2010 - 21:18)
Kuliev а если нужно несколько раз проверить, если один раз то можно и без функции smile.gif Я ведь не навязываю свое мнение, не говорю что как сделал inpost это плохо.... я за демократию...

smile.gif

Спустя 2 минуты, 6 секунд (22.09.2010 - 19:23) inpost написал(а):
Dingo
Посылай, я привык, когда "такие как ты" это делают, не привыкать!
Я 6 лет был киберспортсменом, а там тролей... ты за жизнь столько не видел, сколько я видел за несколько месяцев!

Спустя 5 минут, 50 секунд (22.09.2010 - 19:29) Dingo написал(а):
все закрывайте тему.

inpost не провоцируй, я на этом форуме дольше тебя (точно 1 год, 4 месяца, 11 дней), и тролем я могу назвать тут только тебя. Разговор закончен.
Быстрый ответ:

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