以类似
的方式使用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)并使用正确的键入(字符串,整数,null)填充关联数组(或创建唯一的关联数组)?
在返回结果json_encode
d以进行进一步的客户端处理时,这非常有用。
非常感谢你的帮助
答案 0 :(得分: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
答案 1 :(得分:0)
按如下方式查询information_schema.columns表:
SELECT DATA_TYPE FROM information_schema.COLUMNS WHERE TABLE_NAME = 'tbl1' AND COLUMN_NAME = 'keycol'
假设您的表是tbl1并且有问题的列是keycol。但是,json_encode可能会让你的生活变得更轻松,也可能是无限的。