我有一个select语句,如下所示
$test = $pdo->query('Select col1, SUM(col2), SUM(col3), SUM(col3)*SUM(col2) from table group by col1');
我现在想乘以col2的和,这样我就有了这行工作的
$test = $pdo->query('Select col1, SUM(col2)*100, SUM(col3), SUM(col3)*SUM(col2) from table group by col1');
然而,我希望用户能够在表单中定义数字。我让表单工作,并创建了一个变量,如下所示。
$custom = ($_POST['custom']);
但是,当我尝试将$custom放入select语句时,会出现一个错误。我在这里尝试了一些不同的方法,但似乎没有得到结果。我以为类似下面的东西可能会起作用,但不是吗?处理这个问题的最佳方法是什么?
$test = $pdo->query('Select col1, SUM(col2)*'$custom', SUM(col3), SUM(col3)*SUM(col2) from table group by col1');
最好使用prepared语句传入参数。但是,不能在列列表中使用prepared-statement参数,因此必须在中引用值。
$test = $pdo->query('
Select
col1,
SUM(col2)*' . $pdo -> quote ($_POST ['custom']) . ',
SUM(col3),
SUM(col3)*SUM(col2)
from table
group by col1');
您还必须确保$_POST是数字,因为如果它是空的或不能乘以的,那么查询仍然会失败。你可以这样做。
$custom = $_POST ['custom'] * 1;
$test = $pdo->query('
Select
col1,
SUM(col2)*' . $pdo -> quote ($custom) . ',
SUM(col3),
SUM(col3)*SUM(col2)
from table
group by col1');
将其转换为数字,如下所示,并尝试此
$custom = $_POST ['custom'] * 1;
$test = $pdo->query('Select col1, SUM(col2)*' . $custom . ', SUM(col3), SUM(col3)*SUM(col2) from table group by col1');