2012-05-21 9 views
0

У меня есть форма в моем обработчике:MySQL запросов не вставляя строку

<form action="../submitcomment.php" method="post"> 
       <input maxlength=100 size=60 type="text" name="IP" value="' . $ip . '" readonly="readonly" hidden="hidden"> 
       <input maxlength=100 size=60 type="text" name="BlogId" value="' . $blogId . '" readonly="readonly" hidden="hidden"> 
       <input maxlength=100 size=60 type="text" name="Date" value="' . $date . '" readonly="readonly" hidden="hidden">   
       <input maxlength=100 size=60 type="text" name="Name" placeholder="Enter Your Name"> 
       <input maxlength=100 size=60 type="text" name="Email" placeholder="Enter Your Email"> 
       <input maxlength=100 size=60 type="text" name="Comment" placeholder="Enter Your Comment"> 
       <br> 
       <input type="submit" name="Submit" value="Submit Your Comment"> 
       </form> 

Акция submitcomment.php:

$ip = $_POST['IP']; 
$BlogId = $_POST['BlogId']; 
$Date = $_POST['Date']; 
$Name = $_POST['Name']; 
$Email = $_POST['Email']; 
$Comment = $_POST['Comment']; 

$blog = new Blogs(); 

if (isset($_POST['Submit'])) 
{ 
    $addComment = $blog->insertComment($ip, $BlogId, $Date, $Name, $Email, $Comment); 
    header('Location: http://www.ryan.archi.dev.netsite.co.uk/Blog?success=1'); 
}else{ 
    header('Location: http://www.ryan.archi.dev.netsite.co.uk/Blog?fail=1'); 
} 

, который ссылается на функцию в моем классе:

function insertComment($ip, $BlogId, $Date, $Name, $Email, $Comment) 
    { 
     $query = "INSERT INTO BlogComments (Name, Comment, IPAddress, Email, BlogId, Date) VALUES ('$Name', '$Comment', '$ip', '$Email', '$BlogId', '$Date')"; 
     $oDatabase = new database; 
     $connection = $oDatabase->Connect(); 
     $result = mysql_query ($query, $connection); 
     return $result; 
    } 

Попытка вставить не возвращает и не вызывает никаких ошибок. Насколько я знаю, это должно работать, можете ли вы определить, что я делаю неправильно?

+4

Уфф, пусть SQL Injection жить долго! – shadyyx

+0

Есть ли ошибки, возвращаемые 'mysql_query'? – Sirko

+0

Есть ли попытка вставить возврат или поднять какую-либо ошибку? – shadyyx

ответ

3

Проблема с колонкой с именем Date - date - зарезервированное слово (я думаю, из всех известных РСУБД).

Вы должны избежать этого слова в вашем запросе:

INSERT INTO BlogComments (Name, Comment, IPAddress, Email, BlogId, `Date`) VALUES ('$Name', '$Comment', '$ip', '$Email', '$BlogId', '$Date') 

Также Ваш код дает никому шанс, чтобы сделать инъекции SQL нападения поэтому вы должны, по крайней мере, избежать ввода пользователя или лучше использовать MySQLi или PDO.

Вы можете сделать спасаясь от функции PHP http://php.net/mysql_real_escape_string:

$ip = mysql_real_escape_string($_POST['IP']); 
$BlogId = mysql_real_escape_string($_POST['BlogId']); 
$Date = mysql_real_escape_string($_POST['Date']); 
$Name = mysql_real_escape_string($_POST['Name']); 
$Email = mysql_real_escape_string($_POST['Email']); 
$Comment = mysql_real_escape_string($_POST['Comment']); 
+0

К сожалению, это не сработало – RSM

+0

@RyanMurphy И что это за ошибка? – shadyyx

+0

Когда я сделал mysqld_real_escape_string, он выдает эту ошибку: 'Не удается подключиться к локальному серверу MySQL через сокет '/tmp/mysql.sock' (2)' – RSM

0

Вы отлаживали его? Успешно ли установлено соединение с базой данных? Вы не выполнили mysql, возможно, запрос на вставку не прошел.

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