拜托,谁能告诉我这里我做错了什么?
$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
答案 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);
}