将数组插入mysql数据库

时间:2013-03-14 12:46:07

标签: php mysql arrays

我有以下数组,我想插入到mysql数据库中。

  • 项目[0] =足球
  • Item [1] = Rugby
  • 项目[2] =足球
  • 项目[3] =无板篮球
  • 项目[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 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

假设您想在此表中插入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);

您可能还需要先sanitize字符串,然后查看mysqli,因为mysql已经过时了。