jasperphp传递参数错误
jasperphp error passing parameters
在一份碧玉报告中,我有一个 sql 句子是这样的:
SELECT * FROM table $P!{my_where}
在我的 php 程序中,我这样调用报告:
JasperPHP::process(
base_path() . '/app/reports/report.jasper',
false,
array("pdf"),
array("my_where" => "WHERE field = value"),
\Config::get('database.connections.mysql')
)->execute();
那么,这是错误信息:
Wrong report param format!
用简单的方法行之有效,我的意思是:
在报告中:
SELECT * FROM table WHERE $P!{field} = $P{value}
在PHP中:
JasperPHP::process(
base_path() . '/app/reports/report.jasper',
false,
array("pdf"),
array("field" => $my_field, "value" => $my_value),
\Config::get('database.connections.mysql')
)->execute();
问题是,我需要从多个字段动态构建一个 where 子句,因此必须只传递一个 "where" 参数。
有什么想法吗?
解决:只需要双引号参数:
$my_where = '"' . $my_where . '"';
JasperPHP::process(
base_path() . '/app/reports/report.jasper',
false,
array("pdf"),
array("my_where" => $my_where),
\Config::get('database.connections.mysql')
)->execute();
在一份碧玉报告中,我有一个 sql 句子是这样的:
SELECT * FROM table $P!{my_where}
在我的 php 程序中,我这样调用报告:
JasperPHP::process(
base_path() . '/app/reports/report.jasper',
false,
array("pdf"),
array("my_where" => "WHERE field = value"),
\Config::get('database.connections.mysql')
)->execute();
那么,这是错误信息:
Wrong report param format!
用简单的方法行之有效,我的意思是:
在报告中:
SELECT * FROM table WHERE $P!{field} = $P{value}
在PHP中:
JasperPHP::process(
base_path() . '/app/reports/report.jasper',
false,
array("pdf"),
array("field" => $my_field, "value" => $my_value),
\Config::get('database.connections.mysql')
)->execute();
问题是,我需要从多个字段动态构建一个 where 子句,因此必须只传递一个 "where" 参数。
有什么想法吗?
解决:只需要双引号参数:
$my_where = '"' . $my_where . '"';
JasperPHP::process(
base_path() . '/app/reports/report.jasper',
false,
array("pdf"),
array("my_where" => $my_where),
\Config::get('database.connections.mysql')
)->execute();