内爆数组后无法插入

时间:2014-04-28 05:54:04

标签: php mysql sql arrays

我想将一个内爆数组插入数据库..

示例:$array = array('A','B','C') ..在内爆后,值为A,B,C,因为我使用implode(",",$array) ...

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

  

您的SQL语法有错误;检查手册   对应于您的MySQL服务器版本,以便使用正确的语法   接近')值('运营总监','运营总监','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());

4 个答案:

答案 0 :(得分: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());

答案 1 :(得分: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());

答案 2 :(得分:0)

从查询中删除额外的逗号

("insert into checklist (check_ok,check_pos,check_code,) values ('$checkok','$checkok','$code')"
                                                      ^

Waring: Please, don't use mysql_* functions in new code。它们不再被维护and are officially deprecated。请参阅red box?转而了解prepared statements,并使用PDOMySQLi - this article将帮助您确定哪个。如果您选择PDO here is a good tutorial

答案 3 :(得分: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')");