2013-08-10 2 views
-1

При вызове моей функции появляется ошибка синтаксиса MySQL, любые идеи?Ошибка синтаксиса MySQL

У вас возникла ошибка в синтаксисе SQL; проверьте руководство, которое соответствует версии сервера MySQL для корректного синтаксиса использовать вблизи «» в строке 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

возможно, из-за неэкранированных характеристик, используйте PDO или mysqli (Parametrize Query) для предотвращения SQL-инъекции. –

+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'") 

Вы не закрывал значения. должно быть:

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

Кроме того, поскольку все здесь будут напомнить вам, функции mysql_ устарели. Вы должны использовать PDO или MySQLi. Простой поиск в Google либо даст вам много ресурсов для перехода.

2

Ошибка в том, что у вас нет закрывающей круглой скобки в вашем запросе на вставку. Обновление запроса следующим образом:

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

Примечания закрывающей скобки после '$cContent'.

Другие известные проблемы: вы по-прежнему используете mysql_ расширения, которые устарели, и вы должны начать использовать либо mysqli, либо pdo. Также обратите внимание, что ваша текущая реализация уязвима для атаки SQL-инъекций, вы должны, по крайней мере, реализовать mysql_real_escape_string. Пожалуйста, обратите внимание на https://www.owasp.org/index.php/SQL_Injection

Смежные вопросы