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

Php 没有错误,但不写入数据库,php,Php,谢谢你花时间看这个 不会弹出错误,但不会写入数据库 有人能帮我解决我做错了什么吗 <?php $subject = $_POST['subject']; $comment = $_POST['comment']; if(isset($_POST['submit'])) { $connect = mysql_connect('localhost','<USER>','<PASSWORD>'); mysql_select_db("rebeler_comment");

谢谢你花时间看这个

不会弹出错误,但不会写入数据库

有人能帮我解决我做错了什么吗

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

}
?>
试一试

对于检查错误检查mysql\u errno不小于error,mysql\u error包含错误消息

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扩展要好得多。

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

$query = mysql_query("INSERT INTO `cdb` ('',subject', 'comment' VALUES    ('',$subject','$comment')");
                                         ^^---invalid field
                                            ^---unbalanced quote
                                                               ^---missing )
不能用“引号”引用字段名。这会将它们转换为字符串,而不是字段名

您的代码至少应具有以下结构:

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

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

请不要再使用mysql函数,它们已被弃用。有关详细信息,请参阅。相反,你应该学习并使用或。如果你不能决定哪一个,我会帮你的。如果您选择PDO,.BTW,您就可以接受SQL注入。您应该使用反勾号作为列名。使用mysql\u error。它会告诉你到底是怎么回事。你忘记了结尾、主题、评论和a。更改为'subject','comment'当然,这表明,代码中没有错误捕获。列名不能用撇号括起来,至少不应该这样。如果不是保留的话,请改用反勾号,或者什么也不要用。@CreatoR,你太棒了,谢谢…在其他人那里,谢谢你发帖,我喜欢这个地方,我会努力保护这个地方,一切都好,我会在php方面做得更好的,我向wumm和marc保证,哈哈,谢谢大家的支持help@MosesBolton通常会有一个幸福的结局,这是其中之一,干杯。加上一个缺少的before值,如果没有无效字段,值的数量与字段的数量不匹配。对于列:不要使用引号,而是倒勾号。这不是撇号,而是倒勾号。@MosesBolton没问题。然而,你最好还是使用
$result = mysql_query(...) or die(mysql_error());
                          ^^^^^^^^^^^^^^^^^^^^^^