我有数组$ student []
<?php
$student['id'] = "10402";
$student['hnumber'] = "H030502";
$student['name'] = "Larry Wayne";
print_r($student);
?>
打印出来:
Array ( [id] => 10402 [hnumber] => H030502 [name] => Larry Wayne )
我想要完成的是将值存储到数组中,然后将其插入到数据库表中。
所以insert语句是:
$q = "insert into table (id, hnumber, name) VALUES ('10401', 'H030502', 'Larry Wayne')";
我想使用数组将所有值存储到其中,用表字段名称标记每个值,因为它将是我将插入数据的大约25个字段。
如果有更好的方法来实现这一目标,我全都听见了。
提前致谢。
答案 0 :(得分:0)
假设您正在构建来自其他来源的学生阵列,那么这样的事情怎么样?
// data from an external source
$students = array(
// student 1
array(
123,
'h123',
'John Smith',
),
// student 2
array(
456,
'h456',
'Jane Smith',
),
// ... and so on
);
$values = array();
foreach ( $students as $student )
{
// @todo, make sure to sanitize values!!!
$values[] = sprintf('(%s)', implode(', ', $student));
}
// build query
$query = 'INSERT INTO `table` (`id`, `hnumber`, `name`) VALUES '.implode(', ', $values);
请注意,如果您愿意,上面的代码是“伪”或想法。确保清理值:)
编辑:还有一件事。如果你想要一个简单的修复,上面的代码是好的,最好是某种简单的数据导入。更好的方法是创建一个处理所有这些逻辑的学生。
答案 1 :(得分:0)
我想简单评论一下大卫的例子,因为它与我建议的几乎相同,但遗憾的是我无法在评论中添加代码。大卫从原始问题中遗忘的一件事是,您希望将表字段用作数组的一部分 - 在此示例中,作为关键字段。在foreach中,您可以将数组拆分为键/值对,然后在代码本身中使用它们。
<?php
$student['id'] = "10402";
$student['hnumber'] = "H030502";
$student['name'] = "Larry Wayne";
$queryFields = array();
$queryValues = array();
$queryString = '';
foreach($student as $key => $value){
$queryFields[] = '`'.$key.'`';
$queryValues[] = $value;
}
$queryString = 'INSERT INTO `table` ('.implode(',', $queryFields).') VALUES ('.implode(',', $queryValues).')';
//run_query($queryString)
?>
由于我不是100%熟悉CodeIgniter,因此很可能有一种方法可以将数组和/或对象映射到某种ActiveRecord实现。但是,由于您只是在寻找一种自己生成查询字符串的方法,这样做就可以了。