【问题标题】:insert php array into mySql将php数组插入mySql
【发布时间】:2011-11-10 08:04:43
【问题描述】:

我正在寻求一些指导。

我有一个数据表单字段,我将其插入到表格中,并希望将数据与其他相关数据的 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());}
 ?>

这是关联信息的推荐方式吗?或者是另一种实现相同结果的方法?

【问题讨论】:

  • 希望您在生产代码中清理您的输入。该代码只是尖叫 SQL 注入。

标签: php mysql arrays insert relational


【解决方案1】:

MySQL 中的“family”列是什么数据类型? 我很确定你不能直接将这样的 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']);

family 列应该是 varchar 还是 text 类型,具体取决于 family 数组的长度。

一种更可靠的方法是创建一个单独的表来存储您的家庭数据并使用 MySQL JOIN 语句来获取与 family_info 表中的一个条目相关联的值。

这里有一些关于连接的信息

Joining two tables without returning unwanted row

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

【讨论】:

    【解决方案2】:

    还有一种方法

          $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');";
    

    【讨论】:

    • 谢谢 Roshan - 我的数据库中的家庭列需要什么字段类型是 VarChar?
    猜你喜欢
    • 2011-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-19
    • 2011-12-12
    • 2011-08-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多