插入多个数据

时间:2011-08-11 17:38:00

标签: php mysql insert

我怎么做错了我想从数组中插入db数据:

$tabb = array(
  'name' => 'test',
  'login' => 'testt');

但我不能使用SET,因为查询结束是char,。

public function insert($table, $values){

if($this->database){
print_r($values);
$we = 'INSERT INTO '. $table .' SET ';
foreach($values as $value => $key) {
$we .= ' ('. $value .' = "'. $key .'") ';   
}
print $we;
mysql_query($we);

}
return true;
}

我打印$ we:

INSERT INTO user SET (name = "test") (login = "testt")

不行,请帮忙 PHP

4 个答案:

答案 0 :(得分:3)

我真的建议避免SET。它不常见,并且可以选择不常见的东西和常见的东西,总是与常见的东西相媲美 - 这意味着您的社区需要更广泛,更快速,更好的支持。

如果没有它,你将如何处理这个问题:

如果您的USER表格中只有两列,则只需使用VALUES后跟逗号描述的数据集列表:

INSERT INTO user VALUES ("test","testt"),("test2","testt2")

你的功能看起来并不适合这个,但不管怎么说都是好事。

但看起来你是按列名插入的(一般来说是一个好主意):

INSERT INTO user (name, login) VALUES ("test","testt")

使用PHP,这就变成了:

$items = array_map('mysql_real_escape_string', $values);
$items = '(\'' . implode( '\',\'', $items ) . '\')';
$q = 'INSERT INTO '. 
         $table . 
     // using implode with array_keys assumes that you know all of the keys
     // ahead of time. If you don't, I MUST suggest your re-think your code
     // omit the following line if you want to follow the first SQL example
     ' (' . implode( ',', array_keys( $values ) . ') '.
     ' VALUES ' .
     $items;

答案 1 :(得分:1)

public function insert($table, $values){
    $fields = array();
    $data = array();
    foreach ($values as $key => $val) {
        $fields[] = mysql_real_escape_string($key);
        $data[] = mysql_real_escape_string($val);
    }
    $fields = implode(',', $fields);
    $data = implode(',', $data)

    $sql = "INSERT INTO $table ($fields) VALUES ($data);"
    mysql_query($sql) or die(mysql_error());
}

答案 2 :(得分:0)

您需要在(name = "test") (login = "testt")

之间将(name = "test"), (login = "testt")与“,”分开

另一种方法是:
INSERT INTO user (name, login) VALUES ("test", "testt")

答案 3 :(得分:0)

public function insert($table, $values)
{
    if($this->database)
    {
        print_r($values);
        $we = 'INSERT INTO '. $table .' SET ';
        $sep = '';
        foreach($values as $value => $key)
        {
            $we .= $sep . ' ('. $value .' = "'. mysql_real_escape_string($key) .'") ';
            $sep = ',';
        }
        print $we;
        mysql_query($we);
    }
    return true;
}

或者,如果你想变得棘手:

public function insert($table, $values)
{
    if($this->database)
    {
        print_r($values);
        $we = "insert into `".$table. "` (`". implode('`,`',array_keys($fields))."`) values ('".implode("','",array_map('mysql_real_escape_string', $fields))."');";
        print $we;
        mysql_query($we);
    }
    return true;
}