首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用MySQL逐个存储数组

用MySQL逐个存储数组
EN

Stack Overflow用户
提问于 2013-05-10 21:59:14
回答 3查看 116关注 0票数 1

我存储了一个数组列表,使用

代码语言:javascript
复制
<?php
$array = array("foo", "bar", "hello", "world");
include("mydb.php");
$array_string=mysql_escape_string(serialize($array));
mysql_query("insert into tsest (array) values('$array_string')",$con) or die("not updated");
?>

现在,我想用一个新数组更新该字段,但不要删除以前使用的数组

代码语言:javascript
复制
   <?php
$array = array("aaa");
include("mydb.php");
$array_string=mysql_escape_string(serialize($array));

$sql= 'select * from tsest where uname = "manoj" ';    
    $result = mysql_query($sql,$con);
    $row = mysql_fetch_array($result);  
$value=$row['array'];
mysql_query('UPDATE tsest SET array="'.$array_string.'"'.$value.' where uname="manoj"',$con) or die("hello");

?>

但它并没有起作用

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-05-10 22:03:02

在存储数组之前,您已经序列化了数组,但是您需要先取消序列化,然后才能向数组中添加内容。

代码语言:javascript
复制
$value=unserialize($row['array']);

您还需要合并数组,执行$array_string。‘“’.$value将不起作用。

试试这个:

代码语言:javascript
复制
$newArray = mysql_escape_string(serialize(array_merge($value, $array_string)));
mysql_query('UPDATE tsest SET array="'.$newArray.' where uname="manoj"',$con) or die("hello");
票数 2
EN

Stack Overflow用户

发布于 2013-05-10 22:05:21

当您像这样保存数组时

代码语言:javascript
复制
mysql_query("insert into tsest (array) values('$array_string')",$con) or die("not updated");

则您不会将用户名与此数据一起保存。但是,当您尝试获取它时,您使用的是用户名

代码语言:javascript
复制
$sql= 'select * from tsest where uname = "manoj" '; 

更新也是如此。因此,更新不起作用,因为您的数组未保存为用户名manoj

因此,在保存数组时,还必须将用户名保存在表中

票数 0
EN

Stack Overflow用户

发布于 2013-05-10 22:09:18

您的update sql有一些错误,不能简单地连接序列化的值以生成下面的新数组尝试代码

代码语言:javascript
复制
   <?php

   $array = array("aaa"); include("mydb.php"); $sql= 'select * from
   tsest where uname = "manoj" ';

------------------------------------------------------------------------

   $result = mysql_query($sql,$con); $row = mysql_fetch_array($result); 
   $value=$row['array']; $new_array = array_merge($array,
   unserialize($value)); array_string =
   mysql_escape_string(serialize($new_array)); mysql_query('UPDATE tsest
   SET array="'.$array_string.'"'.' where uname="manoj"',$con) or
   die("hello");

?>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16484029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档