首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >组合两个PHP变量进行MySQL查询

组合两个PHP变量进行MySQL查询
EN

Stack Overflow用户
提问于 2010-08-30 21:21:06
回答 4查看 2.2K关注 0票数 0

我有一个变量formvar,每当用户在HTML表单中添加额外的字段时,该变量就会递增。这个变量被发送到PHP脚本,目的是遍历所有添加的字段。

我正在尝试组合MySQL查询中的两个变量,以匹配我的HTML表单中的内容。我希望MySQL查询执行upc0、upc1等操作,直到for循环终止。

代码语言:javascript
复制
for($i=0;$i<=$_POST[formvar];$i++)
{
mysql_select_db("bits", $con);
$sql="INSERT INTO report (UPC, Quantity, Comment)
VALUES ('$_POST[upc].$i','$_POST[quantity].$i','$_POST[comment].$i')";
if (!mysql_query($sql,$con))
  {
  die('Error: ' . mysql_error());
  }
else echo "Records added successfully";
}

如果这段代码不好,我很抱歉,我对web编程是个新手。

谢谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-08-30 21:42:57

好的,因为每个答案都暗示了转义(但没有给出示例):

代码语言:javascript
复制
$sql = "INSERT INTO report (UPC, Quantity, Comment) VALUES
       ('" . mysql_real_escape_string($_POST["upc".$i]) .  "','" . 
       mysql_real_escape_string($_POST["quantity" . $i]) .  "','" . 
       mysql_real_escape_string($_POST["comment" . $i]) .  "')";

这应该可以保护您免受SQL注入,并且是创建sql查询的一种适当方法。最好的方法是使用参数化查询(上面有大量的信息,所以我建议一个好的Google搜索要比我在这里解释要好得多)……

票数 2
EN

Stack Overflow用户

发布于 2010-08-30 22:08:58

首先要做的是。在HTML中,像这样创建输入字段:

代码语言:javascript
复制
<input type="foo" name="upc[]">
<input type="foo" name="quantity[]">
<input type="foo" name="comment[]">

然后在你的PHP脚本中,你可以这样做:

代码语言:javascript
复制
<?php
# Choose DB
mysql_select_db("bits", $con);

# Iterates the Form-Data
$data_arr = array();
foreach($_POST['upc'] as $k=>$v) {
  # Makes sure all needed data is available
  if(isset($_POST['quantity'][$k], $_POST['comment'][$k])) {
    $data_arr[] = array(
      'upc' => $v,
      'quantity' => $_POST['quantity'][$k],
      'comment' => $_POST['comment'][$k]
    );
  }
}

# Build mysql insert string
foreach($data_arr as $k=>$v) {
  # Escapes each field
  $v = array_map('mysql_real_escape_string', $v);
  # Maps array to value set
  $data_arr[$k] = '('. implode(',', $v). ')';
}

$sql = 'INSERT INTO report (UPC, Quantity, Comment) VALUES '. implode(', ', $data_arr);

# Perform mysql query
mysql_query($sql, $con) or die('Error: ' . mysql_error());

echo 'Records added successfully';

写在我的iPad上,我在飞机上...太没人测试了。祝好运。;o)

票数 1
EN

Stack Overflow用户

发布于 2010-08-30 21:24:40

我不确定我是否很好地理解了这个问题,但我是这样想的:

代码语言:javascript
复制
$sql="INSERT INTO report (UPC, Quantity, Comment) VALUES
           ('" . $_POST["upc".$i] .  "','" . $_POST["quantity" . $i] .  "','" . $_POST["comment" . $i] .  "')";

注意:这是一个简短的版本,你必须添加mysql_real_escape_string等。

我还假设每个变量都可以是字符串,所以我用'‘将它们括起来。

$_POST“名称”。$i允许你循环遍历以名称" name“开头的POST变量,后跟一个数字,这必须插入到你的for循环中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3600711

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档