我在7个列的表格中的单个查询中插入多行(此处仅显示3列,以便于阅读和输入)。名为created_on的列之一是插入的当前时间。但是我正在构建数组,并在构建数组时将now()作为字符串传递。但是,在执行此操作时,我会在列' created_on'中获得超出范围的值。因为MySQL正在接收函数now()作为字符串' now()'来自PHP而不是now()。如何正确地将now()传递给MySQL,以便查询正确运行。如果我在创建数组时删除引号,那么我会收到PHP错误。我正在以下列方式准备我的查询:
$datafields = array('fielda', 'fieldb', 'created_on');
$data = array(value1a, value1b, 'now()',value2a, value2b, 'now()' ....valueNa, valueNb, 'now()');
其中N(和变量$ N)是总行数,对于表中的每个插入,通常为100,000到100万
function placeholders($text, $count=0, $separator=","){
$result = array();
if($count > 0){
for($x=0; $x<$count; $x++){
$result[] = $text;
}
}
return implode($separator, $result);
}
$pdo->beginTransaction(); // also helps speed up your inserts.
for($i=0;$i<$N;$i++){
$question_marks[] = '(' . placeholders('?', 7) . ')';
}
$sql = "INSERT INTO code (" . implode(",", $datafields ) . ") VALUES " . implode(',', $question_marks);
$stmt = $this->db->prepare($sql);
try {
$stmt->execute($data);
} catch (PDOException $e){
echo $e->getMessage();
}
$pdo->commit();
答案 0 :(得分:0)
而不是现在(),使用日期(&#39; Y-m-d H:i:s&#39;)
编辑 我假设created_on的类型为datetime