如何添加到数据库中的数组并返回每个数组并显示它

时间:2011-12-10 17:19:59

标签: php mysql database arrays

如何在数据库行的数组中添加值,然后在我想获取数组值时,只需在新行上显示每个不同的数组值?

此外,数组如何在mysql中工作以及如何获取它的值?

3 个答案:

答案 0 :(得分:2)

提交的testField已经序列化了数据。

$arrayData = array('one','two','three');
$serializedData = serialize($arrayData);

Mysql插入:

insert INTO table ('testField') Values ($serializedData);

获取数据:

select testField from table where id=1

你在这里得到一些字符串值。然后你应该反序列化这个字符串以获取数组:

$arrayData = unserialize($selectResultValue);

在此处查看有关序列化功能的更多详细信息: http://php.net/manual/en/function.unserialize.php

答案 1 :(得分:1)

MySQL没有本机数组数据类型。因此,您的第一步是弄清楚如何将数组元素存储在MySQL表中。

您是否将每个数组元素存储在自己的数据库行中?

 elem  val
  1    value1
  2    value2
     ...
  n    valuen

或者你会将arraw作为一系列连接值存储在一行中,就像这样吗?

  values  
  value1,value2,value3,...,valuen

在第一种情况下,您可以轻松更新单个数组元素:

  UPDATE array SET val=newValue
   WHERE elem=updatedElement

在第二种情况下,您必须读取值列,将其分解(反序列化)为数组,更改要更改的元素,然后将其(将其序列化)收集回到values列,并更新mySQL表。 @Anthony指出了这一点。

在开始弄清楚如何更新阵列之前,您需要回答有关如何存储阵列的问题。

答案 2 :(得分:1)

保存数组

$foo = array(1,2,3);
mysql_query(sprintf("INSERT INTO some_table ('foo') VALUES ('%s')", serialize($foo));

foo现在将在数据库中显示为字符串1,2,3

获取数组

$result = mysql_query("SELECT id, foo FROM some_table")
$item = mysql_fetch_object($result);
$foo = $item->foo;
$foo = unserialize($foo);

将数据添加到数组

$foo[] = 4;
$foo = array_uniq($foo); // you might want to ensure only unique values
mysql_query(sprintf("UPDATE some_table SET foo='%s' WHERE id=%d", serialize($foo), $item->id);  

foo现在将在数据库中显示为字符串1,2,3,4