感谢您花时间看这个。
没有错误弹出,但没有任何内容写入数据库。
有人可以帮我解决我做错的事吗?
<?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.";
}
?>
答案 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()
包含错误消息