PDO返回空结果o最后结果Mysql

时间:2016-01-27 14:04:30

标签: php mysql pdo

拜托,谁能告诉我这里我做错了什么?

$unir = "";

$equxflo = $DB_con->prepare("SELECT idequipo, CONCAT(equipo.nombre,' ',equipo.modelo,' ',equipo.marca,' ',equipo.serieplaca) AS flota FROM equipo WHERE idusuario = '$idu' ORDER BY idequipo DESC");    
$equxflo->execute();
while($row = $equxflo->fetch(PDO::FETCH_ASSOC)){
    print_r($row); //show me all the array
    $ht = $row['flota'];
    $ie = $row['idequipo'];
    $unir = "["."'"."$ht"."'".","."$ie"."]".",";
}
print_r($unir); //show me only la last data

2 个答案:

答案 0 :(得分:0)

我会以这种方式重新编码,请注意bindParam方法。此外,您每次迭代都会覆盖结果集。我添加了一个存储结果的变量$final_result[]

$equxflo = $DB_con->prepare("SELECT idequipo,
                                    CONCAT(
                                           equipo.nombre,' ',
                                           equipo.modelo,' ',
                                           equipo.marca,' ',
                                           equipo.serieplaca) AS flota
                             FROM equipo
                             WHERE idusuario = :idu
                             ORDER BY idequipo DESC
                              ");
$equxflo->bindParam(":idu", $idu);

if ($equxflo->execute()) {
    $final_result = array();
    while ($row = $equxflo->fetch(PDO::FETCH_ASSOC)) {
        print_r($row); //show me all the array
        $ht = $row['flota'];
        $ie = $row['idequipo'];

        // I DONT UNDERSTAND WHAT YOU ARE DOING WITH $unir
        // IS IT JSON? IS IT AN ARRAY? ...EXPLAIN
        $unir = "[" . "'" . "$ht" . "'" . "," . "$ie" . "]" . ",";

        $final_result[] = $row;  // <-- YOU MISSED THIS
    }
    print_r($final_result); //shows all result
    print_r(json_encode($final_result)); //shows result in JSON
    print_r(end($final_result)); //show only last result set
}

答案 1 :(得分:0)

问题在于这一行:

$unir = "["."'"."$ht"."'".","."$ie"."]".",";
     ^ missing concatenation operator
  

例如我喜欢$ unir中的节目[&#39; a&#39;,3],[&#39; a&#39;,2],[&#39; a&#39;,1 ],但只显示[&#39; a&#39; 1] ......

根据您的要求,执行以下操作:

$unir = "";

$equxflo = $DB_con->prepare("SELECT idequipo, CONCAT(equipo.nombre,' ',equipo.modelo,' ',equipo.marca,' ',equipo.serieplaca) AS flota FROM equipo WHERE idusuario = :idu ORDER BY idequipo DESC");
$equxflo->bindParam(":idu", $idu);

if ($equxflo->execute()) {
    while ($row = $equxflo->fetch(PDO::FETCH_ASSOC)){
        $ht = $row['flota'];
        $ie = $row['idequipo'];
        $unir .= "['" . $ht . "'," . $ie . "],";
    }
    print_r($unir);
}

更好的解决方案:

更好的解决方案是将$unir声明为数组,并将数据放入临时数组中,并在每次迭代中将其推送到$unir数组,如下所示:

$unir = array();

$equxflo = $DB_con->prepare("SELECT idequipo, CONCAT(equipo.nombre,' ',equipo.modelo,' ',equipo.marca,' ',equipo.serieplaca) AS flota FROM equipo WHERE idusuario = :idu ORDER BY idequipo DESC");
$equxflo->bindParam(':idu', $idu);

if ($equxflo->execute()) {
    while ($row = $equxflo->fetch(PDO::FETCH_ASSOC)) {
        $tmp_array = array($row['flota'], $row['idequipo']);
        $unir[] = $tmp_array;
    }
    print_r($unir);
}