将php数组插入mySql

Posted

技术标签:

【中文标题】将php数组插入mySql【英文标题】:insert php array into 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 注入。 【参考方案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?

以上是关于将php数组插入mySql的主要内容,如果未能解决你的问题,请参考以下文章

将对象数据插入数组PHP [重复]

将php数组插入mySql

如何将php数组插入mysql表

PHP - 需要帮助将数组插入到给定键的关联数组中

PHP:将数组数据插入 MySQL 数据库

将php数组插入mysql