2011-09-05 93 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