я могу вставить массив php в одно поле записи mysql? - PullRequest
3 голосов
/ 26 апреля 2011

предположим, что у нас есть таблица mysql "таблица" с полями "пользователь" "братья и сестры", и мы хотим сохранить эту информацию о семействе для каждого пользователя.

возможно ли это сделать:

$user=35;
$sibs=array("george","christina");

mysql_query("insert into table (user,siblings) values ('$user','$sibs')");

так что поле "родные братья" содержит массив?

Ответы [ 5 ]

3 голосов
/ 26 апреля 2011

Чтобы построить ответ @David Houde из поста, на который он ссылался, также использовать сжатие для экономии места (если это полезно для вас):

<?php
mySerialize( $obj ) {
   return base64_encode(gzcompress(serialize($obj)));
}

myUnserialize( $txt ) {
   return unserialize(gzuncompress(base64_decode($txt)));
}
?>
3 голосов
/ 26 апреля 2011

Вы хотите использовать для этого функцию PHP serialize () .Чтобы полностью изменить процесс, используйте unserialize ()

Snippit от PHP.net:

<?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.. */
    }
}
?>
2 голосов
/ 27 февраля 2012

Вы можете использовать implode (), чтобы добавить разделитель между значениями.Например, вы можете использовать канал "|"

, например,

$user=35;
$sibs=array("george","christina");

$sibs1 = ''.implode('|',$sibs).'|';

mysql_query("insert into table (user,siblings) values ('$user','$sibs1')");

. При извлечении информации из базы данных используйте LIKE '%|$var|%' в своем запросе, чтобы получить точное значение.напр. | Кристина |

2 голосов
/ 26 апреля 2011

Вы можете использовать сериализацию http://ru2.php.net/manual/en/function.serialize.php

Но это действительно плохая практика.

0 голосов
/ 26 апреля 2011

Да, вы можете serialize() массив до его вставки или implode() с каким-либо разделителем по вашему выбору для этого, но я бы рекомендовал вам просто вставлять отдельные строки для каждого отношения пользователь-> брат и сестра.

...