2013-08-10 5 views
-1

내 함수를 호출 할 때 MySQL 구문 오류가 나타납니다.MySQL 구문 오류 오류

SQL 구문에 오류가 있습니다. 올바른 구문 당신은 값을 닫지 않은 라인 1에서 ''

function getComments1() { 
    $query = mysql_query("SELECT * FROM comments") or die(mysql_error()); 
    while($post = mysql_fetch_assoc($query)) { 
     echo $post['Author']; 

    } 
} 

function addComment($cName, $cContent) { 
    $query = mysql_query("INSERT INTO comments VALUES(null,'$cName','$cContent'") or die(mysql_error()); 
} 

<?php 
include('includes/functions.php'); 
mysql_set_charset ("utf8"); 

if(isset($_POST['submit'])) { 
    if(isset($_POST['CommentName'])) { 
     if(isset($_POST['CommentContent'])) { 
      addComment($_POST['CommentName'],$_POST['CommentContent']); 
      header("Location: derger.php"); 
     } else { "text missing"; 

     } 

    } else { 
     echo "name missing"; 
     include('herger.php'); 
    } 

} else { 
    header("Location: werger.php"); 
} 
?> 
+1

을 보았을 것입니다. SQL 삽입 방지를 위해 PDO 또는 mysqli (매개 변수 쿼리)를 사용하십시오. –

+1

@ Akam의 설명에 덧붙여, 'mysql'확장은 PHP 5.5에서 더 이상 사용되지 않으므로 대신 mysqli 또는 PDO를 사용하는 것이 좋습니다. 이것에 대한 자세한 내용은 http://www.php.net/manual/en/mysqlinfo.api.choosing.php를 참조하십시오. – Cokegod

답변

3
("INSERT INTO comments VALUES(null,'$cName','$cContent'") 

을 근처에서 사용하는 MySQL 서버 버전에 대응하는 설명서를 확인.

또한 여기에있는 모든 사람이 상기시켜 주므로 mysql_ 함수는 사용되지 않습니다. PDO 또는 MySQLi를 사용해야합니다. 둘 중 하나에서 간단한 구글 검색은 당신에게로 전환 할 수있는 많은 자원을 제공 할 것입니다.

2

삽입 쿼리에서 닫는 괄호가 누락되었습니다. 다음과 같이 쿼리를 업데이트 :

$query = mysql_query("INSERT INTO comments VALUES(null,'$cName','$cContent')") or die(mysql_error()); 

주 닫는 괄호를 '$cContent' 후.

다른 주목할만한 문제는 여전히 사용되지 않는 mysql_ 확장 프로그램이며, mysqli 또는 pdo을 사용해야합니다. 현재의 구현은 SQL injection 공격에 취약하므로, 최소한 mysql_real_escape_string을 구현해야합니다. 아마도 이스케이프 처리되지 않은 문자로 인해 https://www.owasp.org/index.php/SQL_Injection