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

如何使用PHP从MySQL数据库中插入和检索数组值?,php,mysql,sql,arrays,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数据库中的数组类似 将数组插入数

因此,我有一个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数组(), 然后我想从数据库中检索这个数组,并检查我之前插入数据库的数组中是否有某个值


另外,我并不是试图从数据库中以数组的形式检索整列值。这是我在谷歌上搜索答案时发现的,而不是我想做的。

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

"INSERT INTO table (arraytest) VALUES ('" . serialize($shared) . "')"
然后,当您从数据库检索时,可以使用
取消序列化


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

或者使用json_encode()从数组中生成json字符串(并使用json_decode()将其转换回)。这将为您的数据提供一种更独立于平台的、也就是经得起未来考验的表示形式。此外,这将导致数据库中存储的字符稍微减少


我遇到过两个案例,其中数据是用way表示的,通常是记录的“附加”信息,很难按入模式,因为它是一个记录一个记录地更改的。这是一个务实的解决方案,尽管不是一个很好的解决方案。特别是,如果不将整个表读入内存,查询存储在此数组中的信息将非常困难。

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

$arr = new Array(1,2,3);
echo $arr; // prints "Array"
在PHP中,当在字符串上下文中使用数组时,您只得到单词“Array”,而不是数组的内容。您必须在数组上运行循环才能插入每个单独的值,例如

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

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

如何从数据库中检索数组数据?我使用PHP内爆函数插入数组数据

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

我被插入MySQL数据库。

通常不建议,您应该单独存储数组的每个值。但是,如果必须使用serialise(),我希望使用数组,因为数组最多可以包含30个值,而且我不希望我的表中有30列。@edwardtyl google“prepared statements”与其拥有30列,不如将其拆分为另一个表,并在该表上连接,然后创建30列rows@ExplosionPills这会是一个比仅仅序列化它更好的选择吗?因为序列化看起来容易多了。@edwardtyl我想是的,但这取决于数据的使用方式。将其存储在数组中会使MySQL本身的使用和操作变得非常困难;如果您想对这个函数的值进行任何处理,实际上必须使用PHParray@ExplosionPills在这种情况下,我将使用serialize,因为我只计划使用php,这是一个聊天程序,其中数组包含每个可以看到帖子的人的id(在同一行的单独列中)。非常感谢。