2012-04-07 2 views
0

에 삽입 나는 다음의 PHP 쿼리 ...캔트 테이블 PHP MySQL의

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, [email protected], 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)"; 
+1

'VALUES ('845450180 ','Liam Gallagher '...')와 같이 따옴표 안에 문자열을 써야합니다. – safarov

+0

Thanks @ safarov, ive 업데이트 내 질문 ... – Liam

답변

1

당신은 두 번째 사용하고있는 내파()에 접착제로 ', '을 둘러싸는 시도 할 수 있습니다, 그래서됩니다 :

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

약 MySQL의 내용은 string literals입니다. 따옴표 안에 문자열을 써야합니다 (예 : "my text").

+0

감사합니다 @ 크로신, ive 내 질문 업데이트 .. – Liam

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', 
    '[email protected]', 
    1, 
    'en_US', 
    1, 
    '2012-03-30T21:54:17+0000' 
) 
+0

Thanks @Arion, ive 님이 내 질문을 업데이트했습니다. – Liam

1

아무것도 더 나은 SQL 쿼리 문자열을 만들기 위해 안티 - SQL 주입 기술에 대한 자세한 내용을보실 수 있습니다이 인용된다.

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", "[email protected]", "1", "en_US", "1", "2012-03-30T21:54:17+0000") 

또한 날짜 (생일)에 DATE 열을 사용하지 않는 이유는 무엇입니까?

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

건배 !!