2014-02-06 48 views
0

我有这样的代码:无法插入链接到DB

if (!empty($_POST['w1']) && !empty($_POST['l1'])) { 
     $str = "<a href='".$_POST['l1']."'>".$_POST['w1']."</a>"; 
     $content = str_replace($_POST['w1'],$str, $content); 
    } 
    $content = nl2br($content); 
    echo "נוסף"; 
    echo $content; 
mysql_query("INSERT INTO `posts` VALUES ('','".$_POST['subject']."','$content','0')"); 

PHP页面不返回任何错误。但数据没有插入到数据库中。 任何人都知道是什么问题?

+0

我只是认为错误报告是关闭的,查询看起来不对我。 –

+0

mysql_query(“INSERT INTO'posts' VALUES('','”。$ _ POST ['subject']。'','{$ content}','0')“); – NLSaini

+0

重新打印错误。我检查了几次查询,没有发现任何错误。 – OfirH

回答

3

如果抛出的任何MySQL错误,它不会显示给你。请执行以下操作以查看错误:

mysql_query("INSERT INTO `posts` VALUES ('','". mysql_real_escape_string($_POST['subject']) . "','" . mysql_real_escape_string($content) . "','0')") or die mysql_error(); 

请注意SQL注入!

+0

谢谢!一旦我添加了'mysql_real_escape_strin()'它解决了我的问题。我不确定为什么。它没有打印错误。它只是工作。你知道也许是为什么? – OfirH

+0

如果你的用户输入中有''字符',他们会粉碎你的SQL语句,因为类似[userinput:foobar]“VALUES('foobar')”可以变成[userinput:foo'bar]“VALUES('foo' bar')“,哪一个会导致语法错误。 – Flixer

+0

附加说明:此行为至少令人讨厌,但也可能会被滥用来执行所谓的SQL注入。这是一个巨大的安全风险,所以你应该告诉你自己:http://php.net/manual/en/security.database.sql-injection.php – Flixer

2

您已经为$ content中的单引号添加到不需要的查询中。

mysql_query("INSERT INTO `posts` VALUES ('','".$_POST['subject']."','$content','0')"); 

将其更改为

mysql_query("INSERT INTO `posts` VALUES ('','".$_POST['subject']."','".$content."','0')"); 
+0

实际上,在字符串中使用变量并不是一种好的编码风格,但它是允许的,所以这不是问题。 – Flixer

0

PHP解析器不返回任何错误,所以错误可能在数据库端。 一件事从我头顶的是

INSERT INTO `posts` VALUES (NULL,'".$_POST['subject']."','$content','0') 

bacause你的数据库配置,以取代

INSERT INTO `posts` VALUES ('','".$_POST['subject']."','$content','0') 

可能不允许你构建正在尝试使用。