我想将一个内爆数组插入数据库..
示例:$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());
答案 0 :(得分:1)
首先,您应该使用PDO或mysqli并使用预备语句来防止潜在的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,并使用PDO或MySQLi - 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')");