将数组插入MySQL数据库

3

我有一个数组,想要将其插入到mysql数据库中。

  • Item[0] = 足球
  • Item[1] = 橄榄球
  • Item[2] = 美式足球
  • Item[3] = 净球
  • Item[4] = 曲棍球

我正在使用位于functions.php中的以下函数来插入到数据库中:

//Capture items 
    function item($register_data)
    {
        array_walk($register_data,'array_clean');

        $fields = ' '.implode(',',array_keys($register_data)).' ';
        $data = '\''.implode('\',\'',$register_data).'\'';

        //Insert user Data into the database
        $query = "INSERT INTO items ($fields) VALUES ($data)";
        mysql_query($query);
    }

现在我来介绍如何插入内容:

这是我的插入方式:

for($i =0;$i<4;$i++)
                {
                    $item = array($i = item[i]);        
                }


//Call the function to insert into the database
item($item);

这种方法似乎不起作用。请协助处理。


2
那么错误是什么? - Ashwini Agarwal
1
  1. 使用 mysql_error() 获取提示以了解出现了什么问题。
  2. 由于 mysql_x 函数已被弃用,请切换到mysqli或PDO。
- Sirko
1
怎么不工作?此外,mysql_*已经被弃用了...请考虑使用PDO或MySQLi。 - brbcoding
2
你的数据库长什么样?那个数组看起来像是一组记录的列表,而不是列,所以为什么要将它们插入到字段中。此外,数组键(0、1、2)对于你的字段来说是可怕的命名。 - Husman
1
“echo” 查询。并查看它是否为有效的 SQL。 - Ashwini Agarwal
显示剩余6条评论
2个回答

1

由于您的物品表有两列,其中一列是id(自动递增),因此您需要跳过它并仅指定第二列ItemName。这在mysql文档this page中有描述。

假设您想在此表中插入5个运动项目:

$sports[0] = "Soccer";
$sports[1] = "Rugby";
$sports[2] = "Football";
$sports[3] = "Netball";
$sports[4] = "Hockey";

您需要让查询看起来像这样:

INSERT INTO items (ItemName) VALUES ('Soccer'), ('Rugby'), ('Football'), ('Netball'), ('Hockey');

代码大致如下:
function insert($insert_data)
{
    $fields = implode(', ', $insert_data);
    $data = '(\''.implode('\'), (\'', $insert_data).'\')';

    //mysql_query("INSERT INTO items (ItemName) VALUES $data;");
    echo "INSERT INTO items (ItemName) VALUES $data;";
}

$sports = array();
$sports[0] = "Soccer";
$sports[1] = "Rugby";
$sports[2] = "Football";
$sports[3] = "Netball";
$sports[4] = "Hockey";

insert($sports);

你可能需要先清理字符串并查看mysqli,因为mysql已经过时了。


不错的例子。让我试试看。 - user1783675
如果 $sports 数组没有静态数量的字段,我该怎么办? - user1783675
@user1783675 你的意思是如果 sports 数组有超过 5 个运动项目?insert 函数将根据数组中运动项目个数生成一个查询,只要该数组大于 1,就应该没问题。 - Edward A
是的@Edward-a。运动活动的数量总是在变化。对于一个用户来说,可能是2个,另一个用户可能是5个,而另一个用户可能是15个。 - user1783675
只要数组中有一个或多个运动,它就应该能够完成工作。 - Edward A

1

PHP内置了序列化和反序列化函数(http://php.net/manual/en/function.serialize.php),您可以将任何对象或数组传递给它,它会返回一个序列化的字符串,您可以将其存储在数据库的单个字段中。


我不想对输入数据进行序列化。我希望逐个插入它们,一个接一个地。 - user1783675

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接