0

感谢您花时间看这个。

没有错误弹出,但没有写入数据库。

有人可以帮我解决我做错了什么吗?

<?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.";

}
?>
4

3 回答 3

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 是一场灾难。

于 2013-11-05T15:55:26.827 回答
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_*扩展要好得多。

于 2013-11-05T15:54:52.467 回答
-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()包含错误消息

于 2013-11-05T15:54:29.253 回答