将多个$ _Post数组插入数据库

时间:2011-12-23 09:48:41

标签: php

如何将$_POST['wmeet']添加到自动INSERT中,或者我应该单独进行更新。我希望所有6个$_POST['wmeet']值以格式“ce1 sf1 sm1”进入m_wmeet,每个值之间有一个空格

if (is_array($_POST['add']))
          foreach ($_POST['add'] as $key => $value) 
          $_POST['add'][$key] = mysql_real_escape_string(stripslashes($value));

if (is_array($_POST['wmeet']))
          foreach ($_POST['wmeet'] as $key => $value) 
          $_POST['wmeet'][$key] = mysql_real_escape_string(stripslashes($value));

        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);
        }

$fields = explode(" ", "m_user m_pass m_email m_date m_ip m_type m_country m_place");
$query_mem = "INSERT INTO social_members SET ".dbSet($fields, $_POST['add']);

            mysql_query($query_mem);

3 个答案:

答案 0 :(得分:1)

尝试利用INSERT和UPDATE之间类似语法的一种方法是使用@KristerAndersson与REPLACE INTO结合使用的implode方法。您必须拥有作为插入的一部分的主键,或者具有唯一的密钥才能使其工作。由于REPLACE INTO与INSERT INTO共享相同的列语法,因此您可以使用它并获得更新以及您的INSERTS。请记住,REPLACE INTO删除旧行并插入一个新行,以便记录键发生变化。

答案 1 :(得分:1)

尝试这样的事情:

if (is_array($_POST['add']))
   foreach ($_POST['add'] as $key => $value) 
      $_POST['add'][$key] = mysql_real_escape_string(stripslashes($value));

   if (is_array($_POST['wmeet']))
         $_POST['add']['m_wmeet'] = mysql_real_escape_string(stripslashes(implode(' ',$_POST['wmeet'])));

    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);
    }

 $fields = explode(" ", "m_user m_pass m_email m_date m_ip m_type m_country m_place m_wmeet");
 $query_mem = "INSERT INTO social_members SET ".dbSet($fields, $_POST['add']);
 mysql_query($query_mem);

答案 2 :(得分:0)

这是我从评论/答案中汇总的内容......哪一个会起作用?

if (is_array($_POST['wmeet']))
   foreach ($_POST['wmeet'] as $key => $value) 
   $_POST['wmeet'][$key] = mysql_real_escape_string(stripslashes($value));
   $wmeet = implode(" ",$_POST['wmeet']);

或者它需要像

那样
$_POST['wmeet'][$key] = 
mysql_real_escape_string(stripslashes($value = implode(" ",$_POST['wmeet'])));

然后插入代码......就像这样的工作?

$query_mem = "INSERT INTO social_members 
    SET ".dbSet($fields, $_POST['add']. ", m_wmeet=".$wmeet);