2014-05-23 2 views
3

PHP와 MySql을 사용하고 있습니다. TeX은 양식을 통해 server.php 파일에 게시되고 배열로 분해됩니다.LaTeX 코드를 MySQL에 삽입하십시오.

foreach($_POST['ques'] as $i){ 
    $arr = explode('~', $i); 
} 

$sql = "INSERT INTO `QUESTIONS`(`Text`) VALUES ('$arr[2]')"; 

$run = mysql_query($sql, $conn) or die(mysql_error()); 

Btw echo $ arr [2]; 정확한 텍스 구문 쇼 "[\ RIGHTARROW {Z = \ FRAC {43} {- 44}}]"

그러나 데이터베이스가 슬래시없이 저장 "

[RIGHTARROW {Z = FRAC {43} {- 44} }] "

+0

그래,하지만 지금까지 해본 적있어? 쿼리 실행 방법 표시 – bartek

+0

문자열이 PHP에서 올바르게 형성되었다고 가정하면 (예를 들어, PHP 리터럴로 작성하고 잘못했기 때문에) 문자열이 데이터 베이스. 데이터베이스를 대상으로하는 컨텐트가 적절히 이스케이프되고 있는지 확인하십시오. 매개 변수화 된 쿼리를 사용해야합니다. – Hammerite

+0

질문이 데이터베이스 쿼리 매개 변수의 이스케이프와 관련이있는 것으로 보입니다. 어쨌든, 당신은 SQL 주입에 취약한 코드를 작성하고 있습니다. 다행스럽게도이 방법은 문제가있는 것과 동일한 솔루션을 제공합니다. 즉, 최신 데이터베이스 라이브러리를 사용하고 준비된 문을 사용하는 것입니다. – Hammerite

답변

1

이전의 mysql_ * 함수를 사용하지 마십시오. mysqli_ *를 사용하십시오. 또는 PDO를 사용합니다.

매개 변수가있는/준비된 쿼리를 사용하면 인용 및 악의적 인 SQL 공격에 대해 걱정하지 않아도됩니다. (하지만 어쨌든 안전하게 운전하십시오)

$dsn = 'mysql:dbname=testdb;host=127.0.0.1'; 
$dbh = new PDO($dsn, $user, $password); 
$sth = $dbh->prepare("INSERT INTO `QUESTIONS`(`Text`) VALUES (?)"); 
$sth->execute(array($arr[2])); 
관련 문제