2011-09-05 183 views
1

我正在尋找一些指導。將php數組插入到mySql中

我有一個數據表單字段,我將其插入到一個表中,並希望將數據與其他相關數據的id相關聯。我想知道是否有推薦的方式來插入一個相關的ID的數組與我所指的信息有關。

以下是我在想什麼......

例如: php的讀取

<?php 
$name = $_POST['name']; 
$info = $_POST['information']; 
$id = $_POST['id']; 
$family = array(); 
?> 
<?php 

$select = "SELECT * 
       FROM `names_family` 
       WHERE `name` LIKE '$name' 
       LIMIT 0 , 30"; 

$selected = mysql_query($select, $connection); 
if(!$selected){ 
die("Hal 9000 says: Dave the select family name ID query failed " . mysql_error());} 


while($row = mysql_fetch_array($selected)){ 
     $familyId = $row[0]; 
     $familyName = $row[1]; 

array_push($family, $familyName => $familyId);    

} 

$insertInfo = "INSERT INTO `family_info`.`info` 
      (`name`, `info`, `family`) 
      VALUES (
      '$name', '$info', '$family');"; 

$insertedInfo = mysql_query($insertInfo, $connection); 
if(!$insertedInfo){ 
die("Hal 9000 says: Dave the insert info query failed " . mysql_error());} 
?> 

這是一種推薦的方式來關聯信息?或者是另一種達到相同結果的方式?

+0

希望傻冒生產代碼消毒你的投入。該代碼只是尖叫SQL注入。 – canadiancreed

+0

當然!!! :) – Christopher

回答

1

還有另一種方式

 $family=array() 
    while($row = mysql_fetch_array($selected)){ 
      $familyId = $row[0]; 
      $familyName = $row[1]; 

     $family[]=$familyName.$familyId;    

    } 

$insertInfo = "INSERT INTO `family_info`.`info` 
      (`name`, `info`, `family`) 
      VALUES (
      '$name', '$info', '$family');"; 
+0

感謝Roshan - 我的數據庫中的家族列需要什麼字段類型爲VarChar? – Christopher

+0

是的,它會是varchar gud運氣 –

2

什麼數據類型是在MySQL中的 「家庭」 列? 我敢肯定,你不能直接將PHP數組插入到MySQL中。 如果可能的話,猜猜這是我不知道的事情之一,因爲我從未嘗試過。

最簡單的方法是將您的php數組編碼爲JSON字符串,並在讀取它時將其解碼回php數組。

$family = array(); 
... 
$familyJsonString = json_encode($family); 
... 
$insertInfo = "INSERT INTO `family_info`.`info` 
      (`name`, `info`, `family`) 
      VALUES (
      '$name', '$info', '$familyJsonString');"; 
... 
$queryString = "SELECT * FROM family_info WHERE name = '$someName'"; 
$query = mysql_query($queryString, $connection); 
$familyData = mysql_fetch_assoc($query); 
$decodedFamilyArray = json_decode($familyData['family']); 

其中家庭列應該是一個varchar或文本類型取決於家庭數組得到多長時間。

更健壯的方法是創建一個單獨的表來存儲您的家庭數據,並使用MySQL JOIN語句獲取與family_info表中的一個條目關聯的值。

這裏是一些信息上加入

Joining two tables without returning unwanted row

http://dev.mysql.com/doc/refman/5.0/en/join.html