所以我有一个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。我不是试图从数据库中检索整列值作为数组。这是我在搜索答案时在谷歌上发现的,而这不是我想要做的。
答案 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数据库。