2011-08-11 20 views
2
私は配列からデータをDBへの挿入したい間違って行う方法

挿入複数のデータ

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

が、クエリの終わりがcharであるので、私は、SETを使用傾けます。

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

私は$私たちを印刷します:

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

動作しない、私は本当にSETを避けることをお勧めします PHP

答えて

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

を助けてください。それははるかに一般的ではなく、一般的であるものと珍しいものとの間の選択肢を与えられ、いつも共通点を持ちます。つまり、あなたの地域社会による幅広く、より速く、より良いサポートを意味します。ここで

は、あなたがそれなしでその問題にアプローチしたい方法は次のとおりです。

あなただけのUSERテーブル内の2つの列を持っている場合、あなたは、単にデータセットのコンマ線引きリストが続きVALUES使用することができます。

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

あなたの機能はこの方向に向いているようには見えませんが、どちらかを知ることは良いことです。

しかし、あなたは、列名(一般的には良いアイデア)によって挿入されているように見えます:これはなるとPHPで

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

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

MySQLはまた、SETの構文を使用できます。 –

0

はあなたが持つ(name = "test") (login = "testt")を区切る必要があります ""それらの間に(name = "test"), (login = "testt")

もう1つの方法はそれです:
INSERT INTO user (name, login) VALUES ("test", "testt")

+0

私はforeachからの名前とログインをどのようにすることができますか? – xyz

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