将两个数组插入到一个mysql表中
Posted
技术标签:
【中文标题】将两个数组插入到一个mysql表中【英文标题】:Insert two arrays into one mysql table 【发布时间】:2011-10-10 07:36:33 【问题描述】:我是 php 新手,一直在尝试将两个数组中的数据插入到一个 mysql 表中。
表格存储以下字段:date
、case_id
、statusid
case_id
对于插入到一个语句中的所有记录都是相同的,并且值来自会话变量。
date
数组和status_id
数组都从表单发布;我知道这两个数组都可以正常发布,因为我使用了 for each 循环将两个数组分别插入到表中。
任何帮助将不胜感激。我已将 foreach 条件留空以获取建议。
$caseid = mysqli_real_escape_string($link, $_SESSION['caseid']);
$status = $_POST['statuses'];
$date = $_POST['dates'];
foreach()
$sql = " INSERT INTO casestatus (date, case_id, statusid) VALUE
('$date', '$caseid', '$statusid') ";
if (!mysqli_query($link, $sql))
$error = 'Error assigning selected statuses to case.';
include 'error.php';
exit();
【问题讨论】:
【参考方案1】:试试这个。
// Avoid SQL Injections.
$caseid = mysqli_real_escape_string($link, $_SESSION['caseid']);
$statuses = $_POST['statuses'];
$dates = $_POST['dates'];
$i = 0;
foreach($statuses as $status)
if($i < sizeof($dates))
$statusid = mysqli_real_escape_string($status);
$date = mysqli_real_escape_string($dates[$i]);
$sql = "INSERT INTO casestatus (date, case_id, statusid) VALUES ('$date', '$caseid', '$statusid')";
$i++:
// etc...
不要忘记在 INSERT 语句中将 VALUE
替换为 VALUES
。
【讨论】:
非常感谢您的回复,我已将您提供的代码替换为以下错误:为 foreach() 提供的参数无效 在更新的解决方案中,我是否删除了 for each 循环?还是我只是用新行替换现有行 删除 foreach 循环,因为来自 $_POST 调用的值是单个值。 $_POST 调用的值是数组,当我运行修改后的代码时,它会为每个 $_POST 变量抛出此错误.... mysqli_real_escape_string() 期望参数 2 是字符串,给定数组跨度> 我把它改成了 ;它不会抛出语法但仍然相同的错误 mysqli_real_escape_string() 期望参数 2 是字符串,给定数组【参考方案2】:您需要在所有值上使用mysqli_real_escape_string
,除非您喜欢成为 pwnd。
$caseid = mysqli_real_escape_string($link, $_SESSION['caseid']);
$statuses = mysqli_real_escape_string($link,$_POST['statuses']);
$dates = mysqli_real_escape_string($link,$_POST['dates']);
【讨论】:
是的,当然,总是忘记写在上面的帖子里以上是关于将两个数组插入到一个mysql表中的主要内容,如果未能解决你的问题,请参考以下文章