【问题标题】:Dynamic php variable in mysql INSERT querymysql INSERT查询中的动态php变量
【发布时间】:2013-01-09 17:17:24
【问题描述】:

我从具有39 fields 的表单中获取值,所有字段的名称顺序为

field1,field2,field3 ....... 

我的sql表mytable也有39个同名字段,即field1,field2,field3 .......

现在在 submit.php 中,我正在寻找一个解决方案,我不想将所有这 39 个变量都写入mytable 即INSERT INTO mytable VALUES(field1,field2,field3,......)

但我正在寻找一种解决方案,在这种解决方案中,我不必编写所有这 39 个变量,而且我仍然可以将它们存储在 sql 的 39 个不同字段中。我试过的是:

$query=mysql_query("INSERT INTO mytable VALUES (
".
for ($k=1; $k<=39; $k++)
{

$vari=$_POST["field".$k];   


$Temp_previous_total++;

}
.")");

【问题讨论】:

  • 那里有问题吗?这就是你的示例代码不起作用的原因吗,有多种原因:P.

标签: php mysql forms bulkinsert


【解决方案1】:
$myvars = '';
for ($k=1; $k<=39; $k++)
{
   $myvars .= "'".$_POST["field".$k]."',";   
}
$myvars = substr($myvars,0,-1);
$query = "INSERT INTO mytable VALUES (
".$myvars.")";
mysql_query($query);

【讨论】:

  • 这就是你的代码应该如何工作的。但请记住,这是 keeg 提到的非常糟糕的做法
  • @JonStirling for 循环中有逗号分隔?
  • 呃,说说我的最后一条评论弄错了:/。无论如何,可能值得假设 OPs 字段实际上是文本输入并相应地引用,但是,如果没有更多上下文,这并不是一个特别的问题。
  • 列数与第 1 行的值数不匹配,我数了一下都是 39 39
  • @Programer 我还更新了代码以反映 Jon 建议的引号,试试是否可行。
【解决方案2】:

您绝对应该在插入这些字段之前对其进行清理,这是一个对 mysql 查询非常有用的类:PHP MySQL wrapper v3 正是这样做的

【讨论】:

    猜你喜欢
    • 2013-03-25
    • 1970-01-01
    • 2015-11-21
    • 2014-09-21
    • 1970-01-01
    • 2013-05-08
    • 2017-10-26
    • 1970-01-01
    相关资源
    最近更新 更多