2016-07-20 6 views
1

У меня есть старый код, который использует старую библиотеку Mysql на Perl.Convert -> numrows для использования с DBD :: mysql в Perl

В большинстве случаев обновление кода для использования DBD::mysql вместо этого работает без проблем, однако я столкнулся с проблемой, когда ->numrows не работает.

Что я должен сделать, чтобы получить ту же функциональность при одновременном использовании DBD::mysql

использование Mysql

use Mysql; 

$type = "yellow"; 

$statement = "select name from customer where type = '$type'"; 

$sth = $dbh->query($statement); 

if ($sth->numrows) { 
    print "Success!"; # This does work. 
} 

использования DBD :: MySQL

use DBI; 
use DBD::mysql; 

$type = "yellow"; 

$statement = "select name from customer where type = ?"; 

$sth = $dbh->prepare($statement); 
$sth->execute($type); 

if ($sth->numrows) { 
    print "Success!"; # This doesn't work. 
} 

Это я ошибка вернуться:

хвост /var/log/apache2/error.log

Can't locate object method "numrows" via package "DBI::st" 
+0

Из [DBI] (http://p3rl.org/DBI): Для операторов SELECT выполняется просто «запускает» запрос в ядре базы данных. Используйте один из методов выборки для извлечения данных после вызова execute. Метод execute не возвращает количество строк, которое будет возвращено запросом (поскольку большинство баз данных не может сказать заранее), он просто возвращает истинное значение. – choroba

+1

'$ sth-> execute ($ type); $ numRows = $ sth-> rows; if ($ numRows) {print «Успех!»;} 'Это должно работать. – AbhiNickz

ответ

0

Я думаю, вы должны использовать его, как показано ниже

if ($sth->rows) 

 Смежные вопросы

  • Нет связанных вопросов^_^