0

我是 PHP 的新手,不知道如何修改这个函数的语法,以便它可以用来排除多个数组,而不仅仅是一个。此代码自动插入在表单中输入的每个值,而无需指定字段并排除一个数组(称为“提交”),并且是我在 http://www.abeautifulsite.net/找到的代码的略微修改版本博客/2007/10/将数组插入到 mysql 数据库表中/

我有几个正在发布的数组,我想从我的 INSERT 函数中排除它们,因为它们要么被单独处理和插入,要么在处理表单后触发用户被重定向的位置。

function mysql_insert_array($db, $data, $exclude = array()) { 
$fields = $values = array(); 
if( !is_array($exclude) ) $exclude = array($exclude); 
foreach( array_keys($data) as $key ) {
    if( !in_array($key, $exclude) ) {
        $fields[] = "`$key`";
        $values[] = "'" . mysql_real_escape_string($data[$key]) . "'";
    }
} 
$fields = implode(",", $fields);
$values = implode(",", $values); 
if( mysql_query("INSERT INTO `$db` ($fields) VALUES ($values)") ) {       
} else {
    return array( "mysql_error" => mysql_error() );
} 
}
$result = mysql_insert_array("db", $_POST, "submit");
4

1 回答 1

1

exclude 参数可以是一个数组数组:

    function mysql_insert_array($db, $data, $excludes = array()) { 
      $fields = $values = array(); 
      if( !is_array($excludes) ) $excludes = array($excludes); 

      foreach($excludes as $exclude ) {
        $data = array_diff_assoc($data, $exclude);
      } 

      foreach( array_keys($data) as $key ) {
        $fields[] = "`$key`";
        $values[] = "'" . mysql_real_escape_string($data[$key]) . "'";
      }

      $fields = implode(",", $fields);
      $values = implode(",", $values); 
      if( !mysql_query("INSERT INTO `$db` ($fields) VALUES ($values)") ) {       
        return array( "mysql_error" => mysql_error() );
      }
    } 

然后,您可以像这样使用它:

$array1 = array('toto', 'titi', 'tata');
$array2 = array('submit', 'foo');

$parent_array = array ($array1, $array2);

$result = mysql_insert_array("db", $_POST, $parent_array);
于 2012-07-26T03:20:04.353 回答