如何在数据库行的数组中添加值,然后在我想获取数组值时,只需在新行上显示每个不同的数组值?
此外,数组如何在mysql中工作以及如何获取它的值?
答案 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