我正在对数据进行一些清理和转换(该部分已完成,哇),并且需要将其插入 MySQL 表中。之前在 Perl 中做过这种事情,我认为,作为处理的一部分,我将数据构造为关联数组是有意义的,其中键与我需要加载它们的字段名称相同 -这样,只需遍历键并生成命名占位符和匹配值的列表,就可以很容易地构造一个准备好的语句。
但是,我似乎无法在 PHP/PDO 中完成这项工作。测试代码:
$x = <<<EOD
1 1 1 1 1
2 2 2 2 2
3 3 3 3 3
4 4 4 4 4
EOD;
$fields = array('name', 'job', 'wallet_size', 'inseam', 'pet_name');
foreach(explode("\n", $x) as $line){
$data = array_combine($fields, explode(' ', $line));
# print_r($data);
$stmt = $dbh->prepare('INSERT INTO foobar VALUES('.':'.implode(', :', $fields));
foreach($fields as $field){
$stmt->bindParam(':'.$field, $data[$field]);
}
$stmt->execute();
}
坦率地说,工作感觉太……不优雅和笨拙——但事实并非如此。
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1' in tst.php:24
有正确的方法可以做到这一点,对吧?如果有人能向我介绍适当的 PHP 风格的措辞,我将不胜感激。