首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bulk INSERT foreach语句

Bulk INSERT foreach语句
EN

Stack Overflow用户
提问于 2011-12-09 17:19:43
回答 2查看 281关注 0票数 1

我希望批量插入所有POST数据,而不必单独键入每个名称/字段。mysql INSERT的最后一行是正确的吗?另外,我不需要再为插入重新处理mysql_real_escape_string()了,对吗?

代码语言:javascript
复制
if (is_array($_POST['add']))
   foreach ($_POST['add'] as $key => $value) 
   $_POST['add'][$key] = mysql_real_escape_string(stripslashes($value));

   mysql_query("UPDATE mem SET m_".$key."='".$value."' WHERE m_id=$id");

.... more code

   mysql_query("INSERT INTO meminfo m_".$key." VALUES '".$value."'");
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-09 17:33:18

这段代码易于注入。

您必须将您的密钥列入白名单以进行保护。

下面是为mysql查询生成SET语句的函数。

代码语言:javascript
复制
function dbSet($fields, $source = array()) { 
  $set=''; 
  if (!$source) $source = &$_POST; 
  foreach ($fields as $field) { 
    if (isset($source[$field])) { 
      $set.="`$field`='".mysql_real_escape_string($source[$field])."', "; 
    } 
  } 
  return substr($set, 0, -2);  
} 

像这样使用

代码语言:javascript
复制
$fields = explode(" ","name surname lastname address zip fax phone"); 
$query  = "INSERT INTO $table SET ".dbSet($fields,$_POST['add']); 
$fields = array("foo","bar"); 
$query  = "UPDATE $table SET ".dbSet($fields,$_POST['add'])." where id=".intval($id); 
票数 1
EN

Stack Overflow用户

发布于 2011-12-09 17:58:36

你可以这样做:

代码语言:javascript
复制
$fields = $values = $set = '';

foreach ($_POST as $key=>$value) {
  $fields .= '`fld_' . $key . '`,';
  $values .= '"' . mysql_real_escape_string($value) . '",';
  $set .= '`fld_' . $key . '` = "'  . $mysql_real_escape_string($value) .  '",';
}

$fields = substr($fields, 0, -1);
$values = substr($values, 0, -1);
$set = substr($set, 0, -1);

$sql_insert = 'INSERT INTO `table` (' . $fields . ') VALUES (' . $values . ');';
$sql_update = 'UPDATE `table` SET ' . $set . ' WHERE `fld_id`=' . $id . ';';

这段代码没有经过测试,我只是从头开始写的,可能会有一些错误。

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

https://stackoverflow.com/questions/8443363

复制
相关文章

相似问题

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