2016-01-12 69 views
1

我不明白,为什么在foreach显示在同一行两次..的foreach显示在同一行两次

if(isset($_POST['idSalarie'])){ 
    $displayForm = $bdd->prepare(
       'SELECT user_prenom, user_nom, poste_nom 
        FROM USER 
         INNER JOIN USER_POSTE_SERVICE ON USER.user_id= USER_POSTE_SERVICE.ups_poste_id 
         INNER JOIN POSTE ON USER_POSTE_SERVICE. ups_poste_id = POSTE.poste_id 
        WHERE user_id = :idSalarie 
        ORDER BY user_nom ASC'); 
    $displayForm->bindParam(':idSalarie', $_POST['idSalarie']); 
    $displayForm->execute(); 
    $resDisplayForm=$displayForm->fetch(); 
    foreach ($resDisplayForm as $key => $value) { 
     echo '<input type="text" name="'.$key.'" value="'.$value.'"/>'; 
    } 
} 

UPDATE: this is what the console displays

+1

如果您直接在数据库上运行SQL,它会产生重复的行吗? –

+0

不,它只返回1行 –

+0

你确定吗?你有2个JOIN和任何分组,它很可能返回多于1行。 – kmike

回答

4

fetch()默认使用FETCH_BOTH

PDO :: FETCH_BOTH(默认值):返回由结果集中返回的列名和索引列号索引的数组。

与尝试 -

$resDisplayForm=$displayForm->fetch(PDO::FETCH_ASSOC); 
+0

它的工作!谢谢 :) –

0
$resDisplayForm=$displayForm->fetch(); 
在此

对其采取正常FETCH_BOTH。对于这种情况发生

FETCH_BOTH(默认):返回双方列名索引的数组和0结果列中返回0列索引号

您还可以从第ERE: - http://php.net/manual/en/pdostatement.fetch.php

尝试FETCH_ASSOC

FETCH_ASSOC:在你的结果返回返回按列名索引的数组设置

尝试: -

$resDisplayForm=$displayForm->fetch(PDO::FETCH_ASSOC);