我有以下php查询...
INSERT INTO `demographic2` (id, name, first_name, last_name, link, username, birthday, gender, relationship_status, email, timezone, locale, verified, updated_time) VALUES (845450180, Liam Gallagher, Liam, Gallagher, http://www.facebook.com/lia.co.uk, lia.co.uk, 11/25/1989, male, Single, gal@hotmail.com, 1, en_US, 1, 2012-03-30T21:54:17+0000)
我看不到任何错误,但出于某种原因,上面的内容不会将数据插入到我的表中,架构看起来就是这样......
关于字符串文字,我将此作为我的插入查询,如何添加引号?
$columns = implode(", ",array_keys($userInfo));
$escaped_values = array_map('mysql_real_escape_string', array_values($userInfo));
$values = implode(", ", $escaped_values);
$sql = "INSERT INTO `demographic2` ($columns) VALUES ($values)";
答案 0 :(得分:2)
阅读MySQL中的string literals。您必须在引号中编写字符串,例如:"my text"
。
答案 1 :(得分:2)
您应该使用""
或''
包装字符串值,例如"value"
或'value'
。
您还可以阅读有关反SQL注入技术的更多信息,以便在http://www.unixwiz.net/techtips/sql-injection.html更好地创建SQL查询字符串
答案 2 :(得分:1)
我认为您需要添加'SomevarcharOrDatetime'
INSERT INTO `demographic2`
(
id, name,
first_name,
last_name,
link,
username,
birthday,
gender,
relationship_status,
email,
timezone,
locale,
verified,
updated_time
)
VALUES
(
845450180,
'Liam Gallagher',
'Liam',
'Gallagher',
'http://www.facebook.com/lia.co.uk',
'lia.co.uk',
'11/25/1989',
'male',
'Single',
'gal@hotmail.com',
1,
'en_US',
1,
'2012-03-30T21:54:17+0000'
)
答案 3 :(得分:1)
没有引用任何内容。
INSERT INTO `demographic2` (id, name, first_name, last_name, link, username, birthday, gender, relationship_status, email, timezone, locale, verified, updated_time)
VALUES (845450180, "Liam Gallagher", "Liam", "Gallagher", "http://www.facebook.com/lia.co.uk", "lia.co.uk", "11/25/1989", "male", "Single", "gal@hotmail.com", "1", "en_US", "1", "2012-03-30T21:54:17+0000")
另外,为什么不将DATE列用于日期(生日)?
答案 4 :(得分:1)
您可以尝试在第二次使用中将', '
作为胶水封入implode()中,因此它变为:
$columns = implode(", ",array_keys($userInfo));
$escaped_values = array_map('mysql_real_escape_string', array_values($userInfo));
$values = implode("', '", $escaped_values);
$sql = "INSERT INTO `demographic2` ({$columns}) VALUES ('{$values}')";
答案 5 :(得分:0)
使用自定义功能映射每个值&将单引号应用于转义字符串。
$columns = implode(", ",array_keys($userInfo));
$escaped_values = array_map('escape_inpt_string', array_values($userInfo));
$values = implode(", ", $escaped_values);
$sql = "INSERT INTO `demographic2` ($columns) VALUES ($values)";
function escape_inpt_string($val) {
return "'".mysql_real_escape_string($val)."'";
}
干杯!!