2010-06-28 75 views
4

在我的代碼中遇到了一些問題,如果我手動將值放入,查詢工作正常。但如果我使用我的變量則失敗。該代碼顯示如下Perl中的Mysql查詢參數問題

my $get_meter_id = $dbh->prepare("SELECT * from t_readings where meter_serial = '21001652' AND ..."); 
$get_meter_id->execute() or die "Couldn't execute statement: ".$get_meter_id->errstr; 
my $meter_reg_id = $get_meter_id->fetchrow_array(); 

以上一期工程

where meter_serial = 21001652 AND ...") 

上述作品之一。

where meter_serial = '".$variable."' AND ...") 

上述方法無效

where meter_serial = ".$variable." AND ...") 

上述方法無效

非常感謝。

+0

肯定,我設置$變量= 21001652; – Kelvin 2010-06-28 05:23:45

+1

證明自己; '使用Data :: Dumper; $數據::自卸車:: Useqq = 1;打印Dumper($變量)' – ysth 2010-06-28 07:14:29

+1

也許你可以說什麼「失敗」意味着什麼?沒有選擇任何東西?給出了一個錯誤?什麼錯誤? – ysth 2010-06-28 07:15:04

回答

7

使用佔位符。不要小心字符串連接。

my $get_meter_id = $dbh->prepare("SELECT * from t_readings where meter_serial=? AND ..."); 
my $foo = 21001652; 
$get_meter_id->execute($foo) or die "Couldn't execute statement: ".$get_meter_id->errstr; 
5

什麼:

my $get_meter_id = $dbh->prepare("SELECT * from t_readings where" . 
    "meter_serial = ? AND ..."); 
$get_meter_id->execute($variable) or die "Couldn't execute statement: " . 
    $get_meter_id->errstr; 
my $meter_reg_id = $get_meter_id->fetchrow_array(); 

進一步reading