0

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

6 回答 6

2

阅读MySQL 中的字符串文字。您必须在引号中写入字符串,例如:"my text".

于 2012-04-07T14:02:31.410 回答
2

您应该用""or包装您的字符串值'',例如"value"or 'value'

您还可以在http://www.unixwiz.net/techtips/sql-injection.html阅读更多关于反 SQL 注入技术以更好地创建 SQL 查询字符串的信息

于 2012-04-07T14:05:49.010 回答
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'
)
于 2012-04-07T14:03:48.763 回答
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 列作为日期(生日)?

于 2012-04-07T14:06:23.410 回答
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}')";
于 2012-04-07T14:07:48.033 回答
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)."'";
}

干杯!!

于 2012-04-07T14:18:03.677 回答