public static function values($context, $values)
{
$params = [];
$stubs = [];
foreach ($values as $v) {
if (is_a($v, 'phprs\\ezsql\\Native')) {
//直接拼接sql,不需要转义
$stubs[] = $v->get();
} else {
$stubs[] = '?';
$params[] = $v;
}
}
$stubs = implode(',', $stubs);
if (array_keys($values) === range(0, count($values) - 1)) {
//VALUES(val0, val1, val2)
$context->appendSql("VALUES({$stubs})");
} else {
//(col0, col1, col2) VALUES(val0, val1, val2)
$columns = implode(',', array_keys($values));
$context->appendSql("({$columns}) VALUES({$stubs})", false);
}
$context->appendParams($params);
}
/** * * insertInto('table')->values([1,2]) => "INSERT INTO table VALUES(1,2)" * insertInto('table')->values(['a'=>1, 'b'=>Sql::native('now()')]) => "INSERT INTO table(a,b) VALUES(1,now())" * @param unknown $values * @return \phprs\ezsql\rules\insert\OnDuplicateKeyUpdateRule */ public function values($values) { ValuesImpl::values($this->context, $values); return new OnDuplicateKeyUpdateRule($this->context); }