1

同时使用 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);
}

我获得了所有值都是 type 的关联数组string

哪种是检测列类型(VARCHAR、DATETIME、INT、FLOAT)并使用正确类型(字符串、整数、空值)填充关联数组(或创建唯一关联数组)的最优雅方法?

json_encode在返回结果d 以进行进一步的客户端处理时,这将非常有用。

非常感谢你的帮助

4

2 回答 2

3

首先,你问错了问题。
您实际上并不需要列类型。事实上,您已经可以通过简单的 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

于 2013-05-10T05:03:13.707 回答
0

查询information_schema.columns表如下:

SELECT DATA_TYPE FROM information_schema.COLUMNS WHERE TABLE_NAME = 'tbl1' AND COLUMN_NAME = 'keycol'

假设您的表是 tbl1 并且有问题的列是 keycol。然而,令我印象深刻的是json_encode可能会让你的生活更轻松,而且可能无限。

于 2013-05-10T04:23:14.713 回答