Автор Тема: Проверка существование записи в MySQL  (Прочитано 4928 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Dart Sidius

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 69
  • +0/-0
  • 0
    • Просмотр профиля
    • http://khv.rhk.ru
Я это делаю так:

&connect;
my $query = $dbh->prepare("SELECT * FROM anketa") || die $DBI::errstr;
$query->execute();
while (my $db_ln = $query->fetchrow_hashref()) {
   if($db_ln->{\'ANKETA_user_id\'} eq $USER_ID) {
      $found_anketa = 1;
   }
}
$query->finish();
&disconnect;

мОЖНО КАК-НИБУДЬ ПОПРОЩЕ?

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
Проверка существование записи в MySQL
« Ответ #1 : 10 Августа 2004, 10:23:15 »
Dart Sidius

Не можно, а нужно... таких примеров я даже в учебнике не видел...

&connect;
my $query $dbh->prepare("SELECT * FROM anketa [B]WHERE ANKETA_user_id = \'$USER_ID\'[/B]") || die $DBI::errstr;
$query->execute();
$found_anketa if $query -> rows();
$query->finish();
&
disconnect;


Условия нужно делать в запросе... И почитай http://linux.opennet.ru/base/dev/perlstyle.txt, а то переменные $USER_ID - сбивают с толку...

Оффлайн Forza

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 288
  • +0/-0
  • 0
    • Просмотр профиля
Проверка существование записи в MySQL
« Ответ #2 : 10 Августа 2004, 11:33:18 »
По-моему, можно ещё проще (если надо проверить только условие существования): без всяких prepare(), execute(), finish(), а также выборки всех столбцов таблицы по SELECT *:
&connect;
my $count =$dbh->selectrow_array ("SELECT COUNT(*) FROM anketa WHERE ANKETA_user_id = \'$USER_ID\'") || die $DBI::errstr;
$found_anketa if $count>0;
&
disconnect;

Оффлайн commander

  • Developer
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1298
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.webtips.ru
Проверка существование записи в MySQL
« Ответ #3 : 10 Августа 2004, 14:42:27 »
Phoinix
Forza
проще надо быть... ;)
use SQLayer;
my $D = SQLayer -> new($connect);
my $found_anketa=$D->row("SELECT ANKETA_user_id FROM anketa WHERE ANKETA_user_id=\'$USER_ID\'");
undef $D;
и условие ставить на $found_anketa... и всё...
And no religion too...

Оффлайн Dart Sidius

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 69
  • +0/-0
  • 0
    • Просмотр профиля
    • http://khv.rhk.ru
Проверка существование записи в MySQL
« Ответ #4 : 11 Августа 2004, 01:10:47 »
А у меня ещё так получилось кстати, в одну строку :)...
if!(($dbh->prepare("SELECT * FROM page_$LANGUAGE WHERE PAGE_id=\'$PAGE\'")->execute()<1)) ;exit;}

Оффлайн commander

  • Developer
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1298
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.webtips.ru
Проверка существование записи в MySQL
« Ответ #5 : 11 Августа 2004, 09:55:45 »
Dart Sidius
а если условие надо использовать несколько раз? несколько раз будешь запрос делать?
And no religion too...

Оффлайн commander

  • Developer
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1298
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.webtips.ru
Проверка существование записи в MySQL
« Ответ #6 : 11 Августа 2004, 09:56:47 »
Dart Sidius
к тому же:  
Цитировать
SELECT * FROM

зачем выбирать все строки в таблице?
And no religion too...

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28