Как вы можете видеть вывод подготовленного оператора PDO против оператора MySQLi. Теперь проблема в том, что $ stmt_result-> fetch_assoc () преобразует числовые поля в int и float. Как это поведение можно отключить?
Поскольку мы хотим переместить наш код в MySQLi, а наш API используется мобильными приложениями, поэтому мы не можем изменять или приводить поля ответа.
=============== Использование PDO ================
$stmt = $pdo->prepare($query);
$result = $stmt->execute($params);
if( $stmt->rowCount() > 0)
{
$dataset = $stmt->fetchAll(PDO::FETCH_ASSOC);
}
header('Content-type: application/json');
echo json_encode($dataset);
Выход:
[
{
"isRegistered": "0",
"DeviceOS": "Android 8.0.0",
"isActive": "1",
"City": "Brooklyn"
}
]
=============== Использование MySQLi ================
$stmt = $mysqli->stmt_init();
$stmt->prepare($query);
....
$stmt->execute();
$stmt_result = $stmt->get_result();
if( $stmt_result->num_rows > 0) {
while( $row = $stmt_result->fetch_assoc() )
$dataset[] = $row;
}
header('Content-type: application/json');
echo json_encode($dataset);
Выход:
[
{
"isRegistered": 0,
"DeviceOS": "Android 8.0.0",
"isActive": 1,
"City": "Brooklyn"
}
]