假设我有一个非常大的用户信息数组:
$user=array(
"name"=>"john",
"ip"=>"xx.xx.xx.xx",
"email"=>"[email protected] /cdn-cgi/l/email-protection",
//lots more values
)
我们还假设这些信息需要进入多个表。例如一个username
需要去餐桌users
, address
需要进入details
桌子等
现在,我使用某个自制函数插入到匹配的表中列名的数组键 and 数组值到正在输入的值。与此类似的东西:
function insert_sql($table, arr $values){
GLOBAL $dbc;
$sql="INSERT INTO `$table` (".implode(array_keys($values), ", ").") VALUES (".implode(array_values($values), ", ").")";
$dbc->prepare($sql)->execute();
return $dbc->lastInsertId();
}
//I don't actually use this function, just trying to show you what is being accomplished.
问题是我的函数使用所有的钥匙 and 所有的值,所以当我只需要将数组的某些部分放入多个表中时,它不起作用。
问题是:
如果列不存在,如何使 INSERT 语句忽略该列?所以如果我插入name
,email
,address
, 入表users
,但该表没有地址列,我需要它来插入包含姓名和电子邮件的行,但只是忽略地址列不存在的事实。
编辑:另一个选项是使用表的列创建一个数组,并用它来过滤值数组。虽然我不太确定如何设置它。