我正在尝试将INSERT查询放在一个函数中,我想出了这些:
function qry_insert($table, $data, $ignore = false)
{
$qry = array();
if (is_array($qry) === true)
{
$qry['query'] = 'INSERT ';
if ($ignore === true)
{
$qry['query'] .= 'IGNORE ';
}
foreach ($data as $key => $value)
{
$data[$key] = $key . ' = ' . $value;
}
$qry['query'] .= 'INTO ' . $table . ' SET ' . implode(', ', $data);
}
return implode('', $qry);
}
我正在使用此函数调用此函数:
$data = array(
'username'=>'userTest',
'email'=>'emailTest',
'password'=>'passwordTest'
);
qry_insert('users',$data);
我的问题是,我没有收到错误,也没有插入项目。我尝试了所有的东西,但我仍然没有插入项目。我的配置和数据库设置是正确的,因为当使用它下面的行时它正在工作。
mysql_query("INSERT INTO users (username,..) VALUES ('userTest'...)");
似乎是我的错误?是否有任何短代码/功能来执行此操作?
答案 0 :(得分:2)
您实际上并没有使用此代码插入任何内容,您仍需要在调用qry_insert之后执行某种mysqli_insert / query。我的猜测是Code Igniter有一些类来处理这个问题。
编辑:
有关示例,请参阅this post。
答案 1 :(得分:2)
我修好了!
function qry_insert($table, $data){
$fields = array_keys( $data );
$values = array_map( "mysql_real_escape_string", array_values( $data ) );
mysql_query( "INSERT INTO $table(".implode(",",$fields).") VALUES ('".implode("','", $values )."');") or die( mysql_error() );
}
$data = array(
'username' => 'userTest',
'email' => 'emailTest',
'password' => 'passwordTest'
);
$qry = qry_insert('users',$data);
谢谢你们! :)
答案 2 :(得分:0)
您的函数会生成一个不包含字符串值引号的查询。它输出:
INSERT INTO用户SET username = userTest,email = emailTest,password = passwordTest
正如您所看到的,它在userTest
,emailTest
和passwordTest
周围缺少引号,因此这会导致查询失败并出现语法错误。此外,您会注意到这是UPDATE
样式语法,而不是INSERT
样式。
最好使用预准备语句重新编写函数并使用正确的INSERT
语法,而不是连接值。
答案 3 :(得分:0)
您实际上是使用此函数调用生成sql查询,您需要使用mysql_query
将数据插入表中。
答案 4 :(得分:0)
你看过PDO了吗?它基本上完成了你试图用这个函数做的事情,但都包含在PHP函数中。