3

我有以下数组,我想将其插入 mysql 数据库。

  • 项目[0] = 足球
  • 项目[1] = 橄榄球
  • 项目[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);

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

4

2 回答 2

1

由于您的 items 表有两列,其中一列是id(auto increment) 您将要跳过它并仅指定第二列ItemName这在本页的 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);

您可能还想先清理字符串并查看mysqli,因为mysql已经过时了。

于 2013-03-14T13:16:19.893 回答
1

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

于 2013-03-14T12:55:56.793 回答