2012-11-08 2 views
0

두 개의 PHP 변수, 하나의 정수와 다른 json이 있습니다.이 변수를 문자열 변수로 변환 한 다음 postgresql 데이터베이스에 삽입합니다.postgresql 쿼리에서 PHP 변수를 사용하는 방법

문자열 변수로 정수를 변환 : 문자열 변수에 페이스 북의 API에서 JSON을 Coneverting

$string1 = (string)$integer; 

가 :

:

$string2 = json_encode($json); 

는 지금, 나는이 포스트 그레스 데이터베이스에이 두 개의 문자열 변수를 삽입

$query = "INSERT INTO interests VALUES(". $string1 ." ," . $string2 .")"; 
pg_query($con, $query) or die("Cannot execute query: $query\n"); 

이것은 작동하지 않습니다. 나는 많은 해결책을 시도했지만 여전히 작동하지 않습니다.

나는

function push_interests(){ 
$id = $facebook->getUser(); 
$int = $facebook->api('/me/interests');  
$host = "hostname"; 
$user = "user"; 
$pass = "password"; 
$db = "database"; 

$con = pg_connect("host=$host dbname=$db user=$user password=$pass") 
    or die ("Could not connect to server\n"); 


$id = (string)$id; 
$int = json_encode($int); 

$sql = "INSERT INTO interests VALUES($1,$2)"; 
pg_prepare($con,'my_insert', $sql) or die ("Cannot prepare statement1\n") ; 
pg_execute($con,'my_insert', array($id,$int)) or die ("Cannot execute statement1\n"); 

pg_close($con); 

} 

출력은 데이터베이스에 삽입 할 제 기능을 변경 : 문장 1 를 실행할 수 없습니다 나는 다음과 같이 데이터베이스를 만들었습니다

$query = "DROP TABLE IF EXISTS interests"; 
pg_query($con, $query) or die("Cannot execute query: $query\n"); 

$query = "CREATE TABLE interests(id VARCHAR(25) PRIMARY KEY, interests VARCHAR(500))"; 
pg_query($con, $query) or die("Cannot execute query: $query\n"); 
+0

가; http://bobby-tables.com/php.html 및 http://php.net/manual/en/security.database.sql-injection.php를 참조하십시오. –

+0

심지어 @greg이 말한 것에 동의합니다. 하지만 내 코드가 작동하지 않고 나는 우둔한 이유 – Pooja

+0

전체 오류 메시지와 최종 생성 된 SQL 텍스트를 표시합니다. –

답변

3

문자열이 간단한 따옴표로 둘러싸인해야하기 때문에. 준비된 문장을 사용하여 이러한 종류의 문제를 무시하고 응용 프로그램이 SQL 주입을 해킹하지 못하도록 올바른 변수가 이스케이프되도록하는 것이 좋습니다.

$sql = "INSERT INTO interests VALUES ($1, $2)"; 
$result = pg_prepare($con, 'my_insert', $sql); 
$result = pg_execute($con, 'my_insert', array($string1, $string2)); 

http://php.net/manual/en/function.pg-prepare.php

편집을 참조하십시오 여기에 내가 테스트 한 실제 코드 :

<?php 

$con = pg_connect('') 
    or die ("Could not connect to server\n"); 

$id = (string) 5; 
$int = json_encode(array('pika' => 'chu', 'plop' => array(1, 2, 3))); 

$query = "CREATE TABLE interests(id VARCHAR(25) PRIMARY KEY, interests VARCHAR(500))"; 
pg_query($query) or die('creating table failed.'); 

$sql = "INSERT INTO interests (id, interests) VALUES ($1, $2)"; 
pg_prepare('my_query', $sql); 
pg_execute('my_query', array($id, $int)) or die("Error while inserting."); 
난 강력하게 @greg에 동의
관련 문제