【发布时间】:2013-12-29 11:57:23
【问题描述】:
我有一个如下脚本。 $_POST 中的一些值要插入到数据库中。 但它不起作用。 需要你的帮助。
<?
$field = array(Priority_Rank, Attending_Period, Priority_Point_Low, Priority_Point_High, Other_Consideration);
$fields = implode(',', $field);
$fieldpost = array();
for ($i=0; $i<count($field); $i++) {
$fieldpost[] = $_POST[$i]; }
$fieldposts = implode (',', $fieldpost);
$query1 = "INSERT INTO $maindb ($mainID, $fields) VALUES ('$seq',$fieldposts)";
mysql_query($query1); ?>
我发现问题出在 VALUES(...,$fieldposts) 中,因为如果我将查询更改为以下内容,则它可以正常工作。
$query1 = "INSERT INTO $maindb ($mainID, $fields) VALUES ('$seq','$_POST[0]','$_POST[1]','$_POST[2]','$_POST[3]','$_POST[4]')";
但是由于这个查询也将被其他具有不同数量 $_POST 的脚本使用,我真的需要在这个文件中循环它们。
注意:$field 位于另一个文件中。
【问题讨论】:
-
请进入 21 世纪并学习使用带有参数化查询的 MySQLi 或 PDO...然后您就可以忘记转义字符串(无论如何您都没有这样做)并且您不需要将字符串值括在引号中(当您将值注入 MySQL 查询时会这样做,但您没有这样做,这可能是您的错误的原因)
-
不要使用短的开放标签
<?否则你是在自找麻烦 -
您应该将值括在引号中并屏蔽它们。
-
@MarkBaker 参数化查询很难处理可变数量的字段。
-
@Barmar - 但是如果你看的话,仍然有很多例子展示了如何在互联网(或here on SO)上做到这一点,它们会消除这段代码中的很多问题