Php PDO返回空结果o最后一个结果Mysql

Php PDO返回空结果o最后一个结果Mysql,php,mysql,pdo,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->execu

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

$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

我会以这种方式重新编码,注意方法。此外,每次迭代都会覆盖结果集。我添加了一个变量
$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
}
$eqxflo=$DB\u con->prepare(“选择idequipo,
海螺(
设备名称,
模型设备,',
马卡装备,
作为flota的serieplaca设备
来自equipo
其中idusuario=:idu
idequipo DESC订购
");
$eqxflo->bindParam(“:idu”,$idu);
如果($eqxflo->execute()){
$final_result=array();
而($row=$equxflo->fetch(PDO::fetch\U ASSOC)){
print_r($row);//显示所有数组
$ht=$row['flota'];
$ie=$row['idequipo'];
//我不明白你拿$unir做什么
//是JSON吗?是数组吗?…解释一下
$unir=“[”””、“$ht”。”、“$ie”。”、“;

$final_result[]=$row;//问题是因为这一行:

$unir = "["."'"."$ht"."'".","."$ie"."]".",";
     ^ missing concatenation operator
例如,我喜欢$unir这个[a',3],[a',2],[a',1]的节目,但只喜欢[a',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);
}

$idu
未在此中设置,请使用
var\u dump($idu)进行检查
在查询中赋值之前。当您有外部输入时,请使用prepared语句使用参数绑定。首先,您没有准备任何东西,如果您不想这样做,那么您使用了太多的函数来实现相同的结果。只需
->query()就可以删除
->prepare
execute()
.hello man$idu=2;例如,但是y有相同的问题:(@codegoie我已经输入了你的代码,这是相同的问题:(但是感谢你的帮助:(你能告诉我你有什么问题吗?我想你在最初的问题中没有具体说明。请查看我的更新答案。查看变量
$final\u result[]
。这是你的问题吗?我想如果你告诉我们你的目标是什么,能帮助我们理解你的问题吗?你期望的结果是什么?@CodeGodie:我更喜欢这样的绑定:
$eqxflo->execute(array(':idu'=>$idu));
这少了一行代码,做了相同的操作,但是在这个$eqxflo->bind_参数(':idu',$idu)中;删除下标和解决方案:$eqxflo->bindparam(':idu',$idu);感谢您的帮助:D@JhoNerVega哎呀,错过了。谢谢你指出这一点。:)