Привет всем, помогите пожалуйста, столкнулся с проблемой, самому решить не удалось.
Структура таблицы:
---------------------------------------
| id | ip | local_or_not |
---------------------------------------
| 1 | 192.168.1 | 1 |
--------------------------------------
| 2 | 192.168.2 | 0 |
--------------------------------------
| 3 | 192.168.2.2 | 1 |
--------------------------------------Нужно выполнить запрос к БД из скрипта, в MySQL он выглядет так :
mysql> SELECT local from local_nets WHERE LENGTH(ip) IN (SELECT MAX(LENGTH(ip)) FROM local_nets WHERE '192.168.2.2' LIKE CONCAT(RTRIM(ip),'%'));
И он работает, а из перла не получается, ругается на синтаксическую ошибку, вот текст скрипта:
##########################################
#!/usr/bin/perl
use Mysql;
$host="127.0.0.1";
$database="test";
$usr="test";
$pass="test";
$dbh = Mysql->Connect($host,$database,$usr,$pass) or print $Mysql::db_errstr;
$dbh->SelectDB($database) or print $Mysql::db_errstr;
print "Connecting to database...\n";
$table="local_nets";
$ip="192.168.2.2";
$sth = $dbh->query("SELECT local FROM $table WHERE LENGTH(`ip`) \
IN (SELECT MAX(LENGTH(ip)) FROM $table \
WHERE $ip like CONCAT(RTRIM(ip),'%')");
$w= $sth->fetchrow();
if ($w=="")
{
$w="0";
}
print "$w\n";
Ругается на кусок '$ip like CONCAT(RTRIM(ip),'%')', подозреваю, что проблема в кавычках, но решить самому не получилось.