Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql perl占位符规则_Mysql_Perl_Placeholder - Fatal编程技术网

mysql perl占位符规则

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 =

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 = "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、 永远正确的表达