3

所以我有一个 PHP 数组“$shared”,其值为 [0, 1, 2](我只是以此为例)。我想从我的 MySQL 数据库中插入和检索这个数组,但它不起作用。

目前我正在使用此代码插入它:

mysqli_query($dbhandle, "INSERT INTO table (arraytest) VALUES ('$shared')");

在上面的代码之后,'arraytest' 列中的 'table' 中的值是 'Array' 而不是 [0, 1, 2] 或者数组应该看起来像 MySQL 数据库中的那样。

将数组插入我的数据库后,我想检索它,目前正在使用此代码:

$id='2';

$result = mysqli_query($dbhandle, "SELECT arraytest FROM table");

while ($row = mysqli_fetch_array($result)) {

$shared=$row{'arraytest'};

if(in_array($id, $shared)){

    echo 'Value is in the array. Success!';

}

}

我在网上做了一些研究,并没有找到具体的方法。

我想将一个 PHP array() 插入数据库表中的一个单元格,然后我想从数据库中检索该数组并检查某个值是否在我之前插入数据库的数组中。

PS我不是想从数据库中检索一整列值作为数组。这是我在搜索答案时在谷歌上找到的,这不是我想要做的。

4

5 回答 5

5

我不得不质疑你为什么要这样做,但最简单的答案是序列化数组。

"INSERT INTO table (arraytest) VALUES ('" . serialize($shared) . "')"

然后您可以unserialize在从数据库中检索它时使用


您应该正确地参数化您的查询以防止注入或错误。

于 2013-05-23T20:15:27.467 回答
1

或使用 json_encode() 从数组中生成 JSON 字符串(并使用 json_decode() 将其转换回来)。这将为您提供更加独立于平台的数据,也就是面向未来的数据表示。除此之外,这将导致您的数据库中存储的字符稍少。

我遇到了几个用方式表示数据的案例,通常是“附加”信息,用于难以按到模式中的记录是它正在逐个更改记录。这是一个务实的解决方案,虽然不是一个很好的解决方案。特别是,如果不将整个表读入内存,您将很难查询存储在此数组中的信息。

于 2013-05-23T20:19:54.490 回答
0

您不能将 PHP 数组插入数据库。你的问题是这样的:

$arr = new Array(1,2,3);
echo $arr; // prints "Array"

在 PHP 的字符串上下文中使用数组时,您只会得到单词“Array”,而不是数组的内容。您必须在数组上运行一个循环以插入每个单独的值,例如

foreach($arr as $val) {
   INSERT INTO yourtable VALUES ($val)
}
于 2013-05-23T20:20:03.550 回答
0

虽然不建议存储这样的数组,但最好的方法是使用序列化和反序列化(用于从数据库中取回数据)。但是,我认为您应该使用 foreach 循环将每个值放置为单独的单元格...

于 2013-05-23T20:23:02.580 回答
0

如何从数据库中检索数组数据?我使用 PHP implode 函数插入了数组数据。

$val=implode(',',$val); 

我被插入到 MySQL 数据库中。

于 2019-05-30T08:01:43.623 回答