将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的主要内容,如果未能解决你的问题,请参考以下文章