我怎么做错了我想从数组中插入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
答案 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;
}