没有错误,但没有写入数据库

时间:2013-11-05 15:52:25

标签: php

感谢您花时间看这个。

没有错误弹出,但没有任何内容写入数据库。

有人可以帮我解决我做错的事吗?

<?php
$subject = $_POST['subject'];
$comment = $_POST['comment'];

if(isset($_POST['submit']))
{
$connect = mysql_connect('localhost','<USER>','<PASSWORD>');
mysql_select_db("rebeler_comment");

    $query = mysql_query("INSERT INTO `cdb` ('',subject', 'comment' VALUES    ('',$subject','$comment')");


echo "Data successfully written to DB";
}

else{
echo "Sorry, there was a problem.";

}
?>

3 个答案:

答案 0 :(得分:7)

当然没有错误。您没有检查任何内容,因此您错过了插入查询中明显的语法错误:

$query = mysql_query("INSERT INTO `cdb` ('',subject', 'comment' VALUES    ('',$subject','$comment')");
                                         ^^---invalid field
                                            ^---unbalanced quote
                                                               ^---missing )

您可以引用带有'引号的字段名称。这会把它们变成字符串,而不是字段名称。

您的代码应该绝对最低限度具有以下结构:

$result = mysql_query(...) or die(mysql_error());
                          ^^^^^^^^^^^^^^^^^^^^^^

简而言之,您的SQL是一场灾难。

答案 1 :(得分:3)

PDO:

$pdo = new PDO('mysql:host=localhost;dbname=database', '<USER>', '<PASSWORD>');
$stmt = $pdo->prepare('INSERT INTO `cdb` (`subject`, `comment`) VALUES (:subject, :$comment)');
$stmt->execute(array(':comment' => $comment, ':subject' => $subject));

这些扩展具有内置函数,用于创建准备好的查询,使您可以毫无问题地使用引号和撇号。这比使用已弃用的mysql_*扩展名更好。

答案 2 :(得分:-1)

尝试

$subject = mysql_real_escape_string($subject);
$comment = mysql_real_escape_string($comment);
$query = mysql_query("INSERT INTO `cdb` (`subject`, `comment`) VALUES ('$subject','$comment')");

为了检查错误check mysql_errno()(不是0而不是错误),mysql_error()包含错误消息