2011-12-23 79 views
2

如何将$_POST['wmeet']添加到自动插入中或者是否应该单独更新。我希望所有的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); 
+1

你就不能做到'$值=破灭(””,$ _ POST [‘wmeet’]);' – Cyclonecode 2011-12-23 09:53:39

+0

@KristerAndersson然后办和更新应用它还是可以添加到我的插? – acctman 2011-12-23 10:58:13

回答

1

的一种方式,试图采取INSERT和UPDATE之间的优势类似的语法的是使用破灭@KristerAndersson提到的方法与REPLACE INTO结合使用。你必须有一个主键,它是你插入的一部分,或者是一个唯一的键,这个键可以工作。由于REPLACE INTO与INSERT INTO共享相同的列语法,因此您可以使用它并在您的INSERTS中获得更新。请记住,REPLACE INTO将删除旧行并插入一个新行,以便记录关键点将更改。

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); 
+0

我有点看到你要去这里。 – acctman 2011-12-23 11:54:51

+0

@acctman - 好吧,别人没有=) – Cyclonecode 2011-12-23 17:20:02

+0

我比我的回答更喜欢这个。 +1 – davidethell 2011-12-23 19:31:29

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