我确信这次之前已经完成了很多次,但我找不到简单的解决方案,可能是因为我很难把它包围起来。上下文是一个自定义PDO包装器。
摘要:我想生成一个两级(?)数组schema
,以便以两种方式轻松访问MySQL表架构:
array_keys(schema)
生成)。详细信息:
$schema = $pdo->run("DESCRIBE " . $tablename);
(magic happens here)
// validate input field array by field names
$queryfields = array_intersect(array_keys($schema), $inputdata;
// check format of input data
foreach ($schema as $column => $key) {
if ($column['type'] == 'datetime') {
$inputdata[$key] = date_format($inputdata[$key], 'yyyy-mm-dd');
}
}
不要陷入细节之中。基本上我想将一个平面阵列数组转换成相同的东西,但按列名称分组。
答案 0 :(得分:0)
好的,我有一个答案。也许有更快/更好的方法做到这一点并不涉及实际走过数组,但也许这是最好的方法。
$schema = array();
$rows = $pdo->query("DESCRIBE " . $table);
// refactor array of associative arrays using column name as key
foreach ($rows as $row) {
// pull off the first key-value which is the column name
$key = array_shift($row);
// add the rest of the array to $schema with the column name as the key
$schema[$key] = $row;
}