mysql perl占位符规则
MySQL,Perl 以下选择在没有占位符的情况下可以正常工作,但在占位符的情况下不能正常工作。它不会生成任何SQL错误,但会返回所有空格/零-与不带占位符的同一语句的计数不同mysql perl占位符规则,mysql,perl,placeholder,Mysql,Perl,Placeholder,MySQL,Perl 以下选择在没有占位符的情况下可以正常工作,但在占位符的情况下不能正常工作。它不会生成任何SQL错误,但会返回所有空格/零-与不带占位符的同一语句的计数不同 my $sql="SELECT ?, SUM(IF(H1='1',1,0)) AS banner1 FROM table_name WHERE (?!='' and ? IS NOT NULL) GROUP BY ?"; my $sth = $dbh->prepare($sql); my $variable =
my $sql="SELECT ?, SUM(IF(H1='1',1,0)) AS banner1 FROM table_name WHERE (?!='' and ? IS NOT NULL) GROUP BY ?";
my $sth = $dbh->prepare($sql);
my $variable = "Q1";
$sth->execute($variable, $variable, $variable, $variable);
我做错了什么
我是否试图以非预期的方式使用占位符?当我只在WHERE子句中使用占位符时,它就起作用了。当我在SELECT或GROUP BY子句中使用占位符时,它不起作用。问题-占位符只能在WHERE子句中使用?您不能在SQL语句的
SELECT
部分使用占位符。这在以下章节中进行了描述:
对于大多数驱动程序,占位符不能用于语句的任何元素,这将阻止数据库服务器验证语句并为其创建查询执行计划。例如:
不能在SQL语句的
SELECT
部分使用占位符。这在以下章节中进行了描述:
对于大多数驱动程序,占位符不能用于语句的任何元素,这将阻止数据库服务器验证语句并为其创建查询执行计划。例如:
不能使用占位符替换列名或表名。即使在WHERE子句中,它也没有做你认为它在做的事情。当您用
Q1
替换占位符时,您会得到:
WHERE ('Q1'!='' and 'Q1' IS NOT NULL)
i、 e.始终为真的表达式。不能使用占位符替换列或表名。即使在WHERE子句中,它也没有做你认为它在做的事情。当您用
Q1
替换占位符时,您会得到:
WHERE ('Q1'!='' and 'Q1' IS NOT NULL)
i、 永远正确的表达