Php PDO只返回一个结果,期望更多

Php PDO只返回一个结果,期望更多,php,pdo,prepared-statement,Php,Pdo,Prepared Statement,首先,也许我做错了,所以请友善一点;) 我必须通过在数组上循环来生成SQL请求: $sql = "SELECT data_mt_poids.Fap87, Type, Part, Info, Fap87_libcourt FROM data_mt_poids INNER JOIN lib_fap87 ON data_mt_poids.Fap87 = lib_fap87.Fap87 WHERE "; $i = 1; foreach(

首先,也许我做错了,所以请友善一点;)

我必须通过在数组上循环来生成SQL请求:

$sql = "SELECT data_mt_poids.Fap87, Type, Part, Info, Fap87_libcourt 
        FROM data_mt_poids 
            INNER JOIN lib_fap87 ON data_mt_poids.Fap87 = lib_fap87.Fap87   
        WHERE ";
$i = 1;

foreach($liste_territoire as $territoire)
{
    foreach($fap_array as $fap)
    {
        $sql .= "data_mt_poids.ZEFAP = ? OR ";
    }
}

$sql = substr($sql, 0, - 3);

$results = null;
try
{
    $conn = Db::getInstance();
    $stmt = $conn->prepare($sql);
    $i = 1;
    foreach($liste_territoire as $territoire)
    {
        foreach($fap_array as $fap)
        {
            $requested_zefap = $territoire.'-'.$fap;
            $stmt->bindParam($i, $requested_zefap);
            ++$i;
        }
    }

    $stmt->execute();
    $results = $stmt->fetchAll(PDO::FETCH_OBJ);
}
catch(PDOException $e)
{
    die("Error ".$e->getCode()." : ".$e->getMessage());
}
有4个地区和2个F.A.p

我已经记录了SQL请求,没问题,事实上我觉得一切都很好:/

仅返回最后一个可能的结果(最后一个$territoire-$fap耦合)

只有在我使用准备好的查询时才会发生这种情况:/

这里有一个debugDumpParams():

提前感谢您的帮助;)

使用bindValue()而不是bindParam()


这是因为bindParam()将变量绑定为引用,并且只有在调用execute()时才会进行计算-请参阅PHP手册,了解
print\r
$results
,它只有一行,或者您是如何使用它的?您还可以稍微简化绑定。我会这样做,(忽略错误,只是用作剪贴板)。这是因为只有在两个foreach循环运行后才执行查询,此时绑定参数设置为内部foreach中的最后一个值loop@chris85是的,我正在考虑这样做,当我检测到错误时,我删除了我的更改^^“我正在使用结果生成具有Highcharts的图表(顺便说一下^^),请尝试使用bindValue而不是bindParam@DJC我用$stmt->debugDumpParams()编辑了我的帖子,这样你就可以看到迭代次数和绑定变量的数量(我觉得不错:/)我会尝试使用bindValue并让你不断更新;)
SQL: [361] SELECT data_mt_poids.Fap87, Type, Part, Info, Fap87_libcourt FROM data_mt_poids INNER JOIN lib_fap87 ON data_mt_poids.Fap87 = lib_fap87.Fap87 WHERE data_mt_poids.ZEFAP = ? OR data_mt_poids.ZEFAP = ? OR data_mt_poids.ZEFAP = ? OR data_mt_poids.ZEFAP = ? OR data_mt_poids.ZEFAP = ? OR data_mt_poids.ZEFAP = ? OR data_mt_poids.ZEFAP = ? OR data_mt_poids.ZEFAP = ? 
Params:  8
Key: Position #0:
paramno=0
name=[0] ""
is_param=1
param_type=2
Key: Position #1:
paramno=1
name=[0] ""
is_param=1
param_type=2
Key: Position #2:
paramno=2
name=[0] ""
is_param=1
param_type=2
Key: Position #3:
paramno=3
name=[0] ""
is_param=1
param_type=2
Key: Position #4:
paramno=4
name=[0] ""
is_param=1
param_type=2
Key: Position #5:
paramno=5
name=[0] ""
is_param=1
param_type=2
Key: Position #6:
paramno=6
name=[0] ""
is_param=1
param_type=2
Key: Position #7:
paramno=7
name=[0] ""
is_param=1
param_type=2