2014-04-28 48 views
0

我要插入的内爆阵列数据库..无法插入后破灭的阵列

举例:$array = array('A','B','C') ..在破灭后,该值将被A,B,C,因为我用implode(",",$array) ...

然后我想插入到数据库但失败了,它说:

您的SQL语法错误;检查手册中 对应于你的MySQL服务器版本正确的语法使用 接近“)VALUES(”运营总监”,‘运营总监’,‘F001’)

我该怎么办?

这是MySQL查询:

$code = $_POST['code']; 
$position = $_POST['check']; 
$checkok = implode(",",$position); 

mysql_query("insert into checklist (check_ok,check_pos,check_code) values ('$checkok','$checkok','$code')") or die (mysql_error()); 
+1

我们可以看看查询的其余部分吗? – lagbox

+0

表结构和您的查询? – shin

回答

0

您在查询checklist (check_ok,check_pos,check_code,)有不需要的逗号。删除并用试试,

mysql_query("insert into checklist (check_ok,check_pos,check_code) values ('$checkok','$checkok','$code')") or die (mysql_error()); 
+0

是的,我没有看到它。..现在它工作.. – haruya

+1

@haruya请注意,你必须正确地逃避你的变量,特别是因为它们来自'$ _POST'。这里给出的答案仍然容易受到SQL注入攻击。 –

1

首先,您应该使用PDOmysqli并使用准备语句来代替以防止潜在的SQL注入攻击。其次,你在语句本身有一个语法错误;在第一个右括号之前的尾随逗号。

假设你已经配置了正确的字符集,你可以这样做:

$sql = sprintf(
    "insert into checklist (check_ok,check_pos,check_code) values ('%s','%s','%s')", 
    mysql_real_escape_string($checkok), 
    mysql_real_escape_string($checkok), 
    mysql_real_escape_string($code) 
); 

mysql_query($sql) or die (mysql_error()); 
0

尝试增加斜线/逃避只是为了安全起见。

$code = mysql_real_escape_string($_POST['code']); 
$position = mysql_real_escape_string($_POST['check']); 
$checkok = implode(",",$position); 
$checkok = mysql_real_escape_string($checkok); 
$ret = mysql_query("INSERT INTO checklist (check_ok, check_pos, check_code) 
        VALUES ('$checkok','$checkok','$code')");