Py学习  »  DATABASE

DBD::mysql::st execute失败:未知列

gatorreina • 5 年前 • 1513 次点击  

DBD::mysql::st execute failed: Unknown column 'AR_email' in 'field list'

以下是查询:

my $q = "SELECT SUBSTRING(AR_email, LOCATE('@', AR_email) + 1) AS domain  
         FROM carrier 
         WHERE AR_email IS NOT NULL 
         AND SUBSTRING(AR_email, LOCATE('@', AR_email) + 1) =?"; 
my $sth=$dbh->prepare($q);
$sth->execute($domain);

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/55601
 
1513 次点击  
文章 [ 1 ]  |  最新文章 5 年前
GMB
Reply   •   1 楼
GMB    5 年前

这里的问题是不理解的 字符串插值

你用的是双引号( " )将查询字符串分配给 $q ,但它包含一个arobas( @ ),这是插值的。

q美元 最终包含:

SELECT SUBSTRING(AR_email, LOCATE(', AR_email) + 1) AS domain
FROM carrier
WHERE AR_email IS NOT NULL
AND SUBSTRING(AR_email, LOCATE(', AR_email) + 1) =?

如果你把这个放在下面 use warnings ,您将收到以下消息:

Possible unintended interpolation of @' in string

my $q = q/SELECT SUBSTRING(AR_email, LOCATE('@', AR_email) + 1) AS domain  
         FROM carrier 
         WHERE AR_email IS NOT NULL 
         AND SUBSTRING(AR_email, LOCATE('@', AR_email) + 1) =?/; 

故事的寓意:

  • 仅当您

  • 总是 use strict; use warnings;