2011-01-21 2 views
1

단일 및 이중 따옴표를 이스케이프하는 mysql

$results = mysql_query ("SELECT body, title FROM $source_db.Post"); 
while ($row = mysql_fetch_array($results)) { 
if(mysql_num_rows($users_result) > 0){ 
    $insert = "INSERT INTO wp_posts (`body`,`title`) VALUES ('{$row['body']}', '{$row['row']}')"; 
    mysql_query($insert); 
    } 
} 

와 같이 특정 필드를 새 DB로 이동하는 스크립트를 작성했습니다. 단, 큰 따옴표로 인해 매번 쿼리가 중단된다는 것을 알 수 있으므로이 문제에 대한 해결책이 있습니다. herdok 또는 무언가 같이

INSERT INTO wp_posts (`body`,`title`) 
      VALUES 
       ('Here are the final returns from today's ...<br /><br />he stayed home...<br /> 
<div class="entry-content"> 
<div class="entry-body">', 'something') 
+1

http://stackoverflow.com/questions/601300/what-is-sql-injection –

+1

[PHP에서 SQL 삽입을 중지하는 가장 좋은 방법] (http://stackoverflow.com/questions/60174/best) -way-to-stop-sql-injection-in-php) –

답변

6

mysql_real_escape_string입니다.

PHP: mysql_real_escape_string

$insert = "INSERT INTO wp_posts ('body','title') VALUES ('".mysql_real_escape_string($row['body'])."', '".mysql_real_escape_string($row['row'])."')"; 
1

다른 옵션은 mysqli과 준비된 문

을 사용하는 것입니다
$stmt = $this->db->prepare("insert into table (id,name,longstring) values (?,?,?)); 
$stmt->bind_param('iss',$row["id"],$row["name"],$row["body"]); 
$stmt->execute(); 

mysqli가에 할당 된 매개 변수를 바인딩? 준비된 문장에서 정수 (i) 또는 문자열 (들)로.

관련 문제