我有一个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');
答案 0 :(得分:2)
您最好的选择是使用预准备语句来传递参数。但是,您不能在列列表中使用预准备语句参数,因此您必须引用该值。
$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');
答案 1 :(得分:1)
将其转换为如下编号,然后尝试此
$custom = $_POST ['custom'] * 1;
$test = $pdo->query('Select col1, SUM(col2)*' . $custom . ', SUM(col3), SUM(col3)*SUM(col2) from table group by col1');