如何使用PHP从MySQL数据库中插入和检索数组值?

时间:2013-05-23 20:13:35

标签: php mysql sql arrays

所以我有一个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数组()插入数据库表中的一个单元格中, 然后我想从数据库中检索该数组,并检查我之前插入数据库的数组中是否有某个值。

P.S。我不是试图从数据库中检索整列值作为数组。这是我在搜索答案时在谷歌上发现的,而这不是我想要做的。

5 个答案:

答案 0 :(得分:5)

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

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

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


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

答案 1 :(得分:1)

或者使用json_encode()从数组中生成JSON字符串(和json_decode()将其转换回来)。这将为您提供更多与平台无关的,也就是面向未来的数据表示。此外,这将导致数据库中存储的字符数量略少。

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

答案 2 :(得分:0)

您无法将PHP数组插入数据库。你的问题是:

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

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

foreach($arr as $val) {
   INSERT INTO yourtable VALUES ($val)
}

答案 3 :(得分:0)

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

答案 4 :(得分:0)

如何从数据库中检索阵列数据?我使用PHP爆破功能插入了数组数据。

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

我已插入MySQL数据库。