Эффективный способ сохранения массива и его ключей в базе данных

Я пытаюсь сэкономить много переменных в базе данных, и теперь становится нелепо. Я использую PHP и MySQL.

Есть ли способ, я могу получить значение массива и ключи массива (ключи массива точно такие же, как имена столбцов / полей таблицы) за один раз, не добавляя новую пару столбцов переменной и таблицы.

Честно говоря, мне просто нужна помощь в построении SQL String, остальная настройка для меня.

Я могу добавить новый столбец в таблицу базы данных, когда мне нужно сохранить новую переменную.

Спасибо всем за любую помощь

Если вы хотите создать 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') 

Теперь только вам нужно беспокоиться о создании соответствующих столбцов в базе данных.

Сериализовать данные и записать их в одно поле в одной таблице. Затем, чтобы извлечь данные, несериализуйте их, и вы останетесь с массивом.

 <?php $array = array("hello", "world"); $serialized = serialize($array); // -> Then write $serialized to database ?> 

Чтобы получить

 <?php // -> First Get $serialized from database $array = unserialize($serialized); ?> 

Вы можете попробовать сохранить сериализованный массив параметров в базе данных. например, из: 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.. */ } } ?>