您可以看到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"
}
]
答案 0 :(得分:3)
如果只需要结果集中的字符串,则可以在构建$ dataset时将每个值映射到一个字符串:
while( $row = $stmt_result->fetch_assoc() ) {
$dataset[] = array_map('strval', $row);
}