在用 MySQLI 以这样的方式获取数组时
$sql = <<<SQL
SELECT *
FROM `users`
WHERE `live` = 1
SQL;
if(!$result = $db->query($sql)){
die('There was an error running the query [' . $db->error . ']');
}
while($row = $result->fetch_assoc()){
echo var_dump($row);
}
我获得了关联数组,其中所有值都是 string
类型。
检测列类型(VARCHAR、DATETIME、INT、FLOAT)并使用正确的类型(字符串、整数、空值)填充关联数组(或创建唯一关联数组)的最优雅方法是什么?
这在返回结果 json_encode
d 以供进一步客户端处理时非常有用。
非常感谢您的帮助
最佳答案
首先,你问错了问题。
您实际上不需要列类型。事实上,您已经可以使用简单的 PHP 条件从数字中分辨出字符串。但是这两种方法都不会告诉您 NULL。
试试这个
$sql = "SELECT * FROM users WHERE live = 1";
$stm = $db->prepare($sql) or trigger_error($db->error);
$stm->execute() or trigger_error($db->error);
$res = $stm->get_result();
$row = mysqli_fetch_assoc($res);
如果幸运的话,您会得到所有类型。
如果没有 - 您将需要在 PHP 中启用 mysqlnd
关于php - 在 MySQLi 中使用 fetch_array 时检测数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16475072/