不一定使用‘ {’和‘ }’作为qq 的分隔符。其他格式,如qq( ) 和q q / /,也可以使用,只要封闭的分隔符不出现在字符串内即可。我喜欢用q q { },因为‘ {’不像‘)’或‘/’会出现在查询的文本内,并且在查询字符串的结尾也可能有问题。例如,‘)’出现在所显示的INSERT 语句的内部,所以qq( ) 对于引用查询字符串来说不是一个有用的结构。
qq{} 结构能跨行,如果想让查询字符串在Perl 代码中醒目,这很有用:
如果希望将查询格式分为多个行,从而使它的可读性更强,这样也很有用。例如,dump_members 脚本中的SELECT 语句如下:
用q q { }编写如下:
双引号字符串也可以跨行。但是,对于编写多行的字符串,我更喜欢用q q { }。我发现当在一行中看到不匹配的引号时,我就自然地去想,“这会是语法错误吗?”,然后,我就会浪费时间去寻找相匹配的引号。
qq{} 结构在Perl 词汇级注意了引用的问题,因此可将引号容易地放到字符串内,而不会使Perl 搞混它们。然而,还必须考虑SQL 级的语法。考虑向member 表中插入一条记录:
do( ) 发送给MySQL的字符串如下所示:
这是不合法的SQL 语句,因为在单引号字符串内出现了单引号。在第6章中,我们遇到过类似的引用问题。在那里,我们使用mysql_escape_string( ) 来处理这个问题。DBI 提供了一个类似的机制—在一条语句中,对想按字面使用的每个引用值,都调用quote( ) 方法,并使用它的返回值。
前面的例子可编写如下:
现在,do( ) 发送给MySQL的字符串如下所示,具有出现在引用字符串内的可能对服务器转义的引号:
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] 下一页
Tag:数据库教程,sql数据库教程,access数据库教程,电脑教学 - 数据库教程