我想將大量變量保存到數據庫中,現在變得很荒謬。我正在使用PHP和MySQL。一種將數組及其鍵值保存到數據庫的有效方法
有沒有辦法,我可以一次性獲得數組值和數組鍵(數組鍵與表列/字段名稱完全相同),而無需添加新變量和表列對。
說實話,我只需要幫助構建SQL字符串,其餘的是爲我設置的。
當我必須存儲新變量時,我可以將新列添加到數據庫表中。
感謝所有的幫助
我想將大量變量保存到數據庫中,現在變得很荒謬。我正在使用PHP和MySQL。一種將數組及其鍵值保存到數據庫的有效方法
有沒有辦法,我可以一次性獲得數組值和數組鍵(數組鍵與表列/字段名稱完全相同),而無需添加新變量和表列對。
說實話,我只需要幫助構建SQL字符串,其餘的是爲我設置的。
當我必須存儲新變量時,我可以將新列添加到數據庫表中。
感謝所有的幫助
如果你想創建一個從你的陣列SQL查詢,這可能幫助:
// Sample array
$array = array(
'key1' => 'value1',
'key2' => 'value2'
...
'key10' => 'value10'
);
// Get and escape the keys
$keys = array_map('mysql_real_escape_string', array_keys($array));
// Escape the values
$array = array_map('mysql_real_escape_string', $array);
// Build query
$query = "INSERT INTO table(`".implode('`, `', $keys)."`) VALUES('".implode("', '", $array)."')";
mysql_query($query);
在這種情況下,查詢將是這個樣子:
INSERT INTO
table(`key1`, `key2` ... `key10`)
VALUES
('value1', 'value2' ... 'value10')
如果您有一個多維數組(數組數組),您可以創建一個查詢,如下所示:
// Sample multidimensional array
$array = array(
array('key1' => 'value1', 'key2' => 'value2'),
array('key1' => 'value3', 'key2' => 'value4'),
array('key1' => 'value5', 'key2' => 'value6')
);
// Get and escape the keys
$keys = array_map('mysql_real_escape_string', array_keys(current($array)));
// Array to store values for the query
$values = array();
// Loop every row and insert into $values array
foreach($array as $row) {
// Escape all items
array_map('mysql_real_escape_string', $row);
$values[] = "('".implode("', '", $row)."')";
}
$query = "INSERT INTO table(`".implode('`, `', $keys)."`) VALUES ".implode(', ', $values);
mysql_query($query);
在這種情況下,生成的查詢會是這樣的:你不必擔心被創建相應的列到數據庫
INSERT INTO
table(`key1`, `key2`)
VALUES
('value1', 'value2'),
('value3', 'value4'),
('value5', 'value6')
現在唯一的事情。
你可以嘗試存儲在數據庫中選擇一個序列化的陣列。例如,來自:http://us3.php.net/manual/en/function.serialize.php。
<?php
// $session_data contains a multi-dimensional array with session
// information for the current user. We use serialize() to store
// it in a database at the end of the request.
$conn = odbc_connect("webdb", "php", "chicken");
$stmt = odbc_prepare($conn,
"UPDATE sessions SET data = ? WHERE id = ?");
$sqldata = array (serialize($session_data), $_SERVER['PHP_AUTH_USER']);
if (!odbc_execute($stmt, $sqldata)) {
$stmt = odbc_prepare($conn,
"INSERT INTO sessions (id, data) VALUES(?, ?)");
if (!odbc_execute($stmt, $sqldata)) {
/* Something went wrong.. */
}
}
?>
序列化數據並將其寫入一個表中的單個字段。 然後檢索數據反序列化它,你留下一個數組。
<?php
$array = array("hello", "world");
$serialized = serialize($array);
// -> Then write $serialized to database
?>
要檢索
<?php
// -> First Get $serialized from database
$array = unserialize($serialized);
?>
真棒!謝謝塔圖 - 那就是我正在尋找的東西,我只是太小心翼翼地把它拉下來! :) – Abs 2010-01-04 19:48:21