Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.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
Php 在查询中使用mysql绑定_param,只接受列表中的第一个值_Php_Mysql_Mysqli_Parameterization - Fatal编程技术网

Php 在查询中使用mysql绑定_param,只接受列表中的第一个值

Php 在查询中使用mysql绑定_param,只接受列表中的第一个值,php,mysql,mysqli,parameterization,Php,Mysql,Mysqli,Parameterization,我正在使用MySQL和PHP 我尝试使用bind_param参数化查询。现在我需要将一个整数列表传递给查询中的参数化 我尝试了以下查询: select id,date, sum(value) as distance , (select number from table2 where id=id) as Number from Table1 where id in (1777,1778,1779) 但它只返回列表1777中第一个值的结果 如何获得列表中所有条目177717781779的

我正在使用MySQL和PHP

我尝试使用bind_param参数化查询。现在我需要将一个整数列表传递给查询中的参数化

我尝试了以下查询:

select id,date,
  sum(value) as distance ,
  (select number from table2 where id=id) as Number
from Table1 where id in (1777,1778,1779)
但它只返回列表1777中第一个值的结果

如何获得列表中所有条目177717781779的结果?

您需要使用GROUP BY,例如


希望这有帮助

id=id的位置是什么?这也是一个占位符吗?不,是在选择之后立即提到的id。在参数化查询中,我使用了placeholder。等效的参数化查询是:选择id、date、sumvalue作为距离,从表2中选择number,其中id=id作为表1中id所在的number;您可能需要考虑使用连接而不是子查询。请使用一些表别名。id=id不明确。。。对于我们和MySQL引擎都是如此。另一个问题是无法参数化IN条件的值列表。一个参数对应一个值。我知道,当你想要一个可变长度的值列表时,它可以是一个PITA,但这就是参数的工作方式。我们通过这个得到了结果。但是当使用bind_param时,我们没有得到第一个id1777的结果,例如:$a='177717781779'$sqlobj->bind_参数'i',$a;当我们尝试这样做时,得到的结果仅为1777,您不能对整个值列表使用一个参数。您必须使用如下查询。。。在里面并绑定3个参数。
SELECT 
    id, 
    date, 
    sum(value) as distance , 
    (SELECT number FROM table2 WHERE id=id) as Number 
FROM Table1 
WHERE 
    id in (1777,1778,1779) 
GROUP BY id