2013-03-14 59 views
3

我有我想插入到mysql數據庫中的以下數組。將數組插入到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); 

這種方法似乎並不工作。請協助

+2

什麼是錯誤? – 2013-03-14 12:47:38

+1

1)使用'mysql_error()'來獲得錯誤提示。 2)切換到mysqli或PDO作爲'mysql_x'函數已棄用。 – Sirko 2013-03-14 12:47:53

+1

不工作如何?另外,不推薦使用'mysql_ *'...檢查PDO或MySQLi。 – brbcoding 2013-03-14 12:48:12

回答

1

PHP有一個內置序列化&反序列化函數(http://php.net/manual/en/function.serialize.php)。您可以將任何對象或數組傳遞給它,並且它會返回一個序列化的字符串,您可以將其存儲在數據庫的單個字段中。

+0

我真的不想序列化輸入數據。我想單獨插入它。一個又一個 – user1783675 2013-03-14 13:57:21

1

由於您的商品表格有兩列,其中一列是id(自動增量),您將要跳過它並只指定第二列ItemName。這在mysql文檔this page中有描述。

比方說,你想在這個表中插入5個體育:

$sports[0] = "Soccer"; 
$sports[1] = "Rugby"; 
$sports[2] = "Football"; 
$sports[3] = "Netball"; 
$sports[4] = "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非常過時。

+0

不錯的例子。讓我試試這個 – user1783675 2013-03-14 13:55:40

+0

如果我的$ sports數組沒有固定數量的字段,該怎麼辦? – user1783675 2013-03-15 07:09:20

+0

@ user1783675你是說如果體育陣列有超過5個運動?插入函數將根據它有多少運動生成一個查詢,只要該數組大於1,它應該沒問題。 – 2013-03-15 15:05:12