Auf meinem Webserver kann ich get_result()
nicht in meinen PHP-Skripten verwenden. Ich erhalte den Fehler Aufruf zu undefinierter Methode mysqli_stmt :: get_result.json_encode ohne get_result()
Aber bind_result()
und fetch()
funktioniert, aber ich muss die verschiedenen Spalten jedes Mal je nach SELECT-Ergebnis deklarieren, aber ich möchte es generisch.
Der nächstgelegene ich mit dem folgenden Code erhielt, war:
function bind_result_array($stmt)
{
$meta = $stmt->result_metadata();
$result = array();
while ($field = $meta->fetch_field())
{
$result[$field->name] = NULL;
$params[] = &$result[$field->name];
}
call_user_func_array(array($stmt, 'bind_result'), $params);
return $result;
}
function getCopy($row)
{
return array_map(create_function('$a', 'return $a;'), $row);
}
$stmt = $mysqli->prepare("SELECT 1 as userId, 2 as message UNION SELECT 3 as userId, 4 as message");
$stmt->execute();
$row = bind_result_array($stmt);
if(!$stmt->error)
{
while($stmt->fetch())
$genericArray[$row['userId']] = getCopy($row);
}
echo "{ \"userId\": ";
echo json_encode($genericArray);
echo "}";
$stmt->close();
$mysqli->close();
Der Ausgang dieses ist:
{ "userId": { "1": { "userId" : 1, "message": 2 }, "3": { "userId": 3, "message": 4 } } }
Obwohl es sein sollte:
{ "userId": [{ "userId": 1, "message": 2 }, { „userId „: 1, "message": 2 }] }
Ho W bekomme ich diese zusätzliche Ebene aus der JSON-Antwort und mache sie zu einem Array im JSON-Format? Oder gibt es eine andere Möglichkeit, das SELECT-Ergebnis im JSON-Format zu erhalten, ohne den Code jedes Mal zu ändern.
Problem ist in Zeile '$ genericArray [$ Zeile ['country_id']] = getCopy ($ Zeile);' Es gibt keinen Wert für country_id in Ihrem Ergebnis. Daher dass "" –
danke für Ihren Kommentar. Aber es hat mir nur klar gemacht, dass meine Frage nicht richtig gestellt wurde. Eigentlich ist mein Ziel Array im JSON ([...]) auch. Ich schätze, ich brauche immer noch Hilfe. – Graffl