无法插入表PHP MySQL

时间:2012-04-07 13:59:39

标签: php mysql

我有以下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)

我看不到任何错误,但出于某种原因,上面的内容不会将数据插入到我的表中,架构看起来就是这样......

enter image description here

关于字符串文字,我将此作为我的插入查询,如何添加引号?

$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)";

6 个答案:

答案 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)."'";
}

干杯!!