假設列我有一個非常大的數組的信息對用戶:INSERT到表上存在的
$user=array(
"name"=>"john",
"ip"=>"xx.xx.xx.xx",
"email"=>"[email protected]",
//lots more values
)
讓我們也假設這一信息需要進入多個表。例如,一個username
需要去表users
,address
需要進入一個details
表等
現在,我用一定的自制功能,插入我的表是數組鍵相匹配的列名和數組值與輸入值。一些與此類似:
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.
的問題是,我的函數使用所有按鍵和所有的值,所以當我需要的只是陣列放入多個表的某些部分,它不工作。
的問題是:
如何讓我的INSERT語句忽略的列,如果它不存在?因此,如果我將name
,email
,address
插入表users
,但該表沒有地址列,我需要它插入帶有名稱和電子郵件的行,但只是忽略地址列不存在的事實。
編輯:另一種選擇是與表的列進行數組並使用它來過濾值數組。雖然我不確定如何設置。
謝謝!我有列作爲數組$列的值。根據$列過濾$值的最佳方法是什麼(記住數組$ values的鍵是列)。 – hellohellosharp
沒關係,我找到了這個答案:http://stackoverflow.com/questions/4260086/php-how-to-use-array-filter-to-filter-array-keys – hellohellosharp
@hellohellosharp我提供了一個例子,使用'array_intersect_key'但array_filter也很好 –