2013-07-14 25 views
0

在任何人评论之前,我正在学习PHP/MySQL,所以我知道我的代码需要sql注入,一旦我建立了我的系统,我的下一步是了解安全性,一次1步...现在我的问题混淆为什么同样的加入将无法继续工作页面

我有一个基本的页面,让人们像论坛发帖,我有一切张贴到数据库正确,当我查看主题页面本身,我成功加入与主题的用户表,以获得用户信息(用户名,头像),但是当我尝试相同的代码与主题更改为帖子时,我得到一个警告:mysql_fetch_array()期望参数1是资源,布尔给定在第36行错误的view_topic.php中。

这里是工作的代码..

$id = $_GET['topic_id']; 
$sql = "SELECT users.user_id, users.username, users.profile, topics.topic_id, topics.category, topics.sub_category, topics.topic_data, 
      topics.posted_by, topics.posted, topics.view 
    FROM `topics` 
    JOIN `users` on topics.posted_by = users.user_id WHERE topic_id='$id'"; 

这里是我的职位代码不WORKING

$sql2 = "SELECT users.user_id, users.username, users.profile, post_id, post_content, post_date, post_topic, post_by 
    FROM `posts` 
    JOIN `users` on posts.posted_by = users.user_id WHERE post_topic='$id'"; 
+0

数据库返回的错误是什么? –

+0

使用'mysql_error();'看看你得到了什么,并且你正在使用'$ id' - >'$ id = $ _GET ['topic_id'];'在查询中没有转义或消毒,你会很容易任何一个在一分钟内破坏你的数据库 –

+3

你的第二个查询在联接中的select和posting_by中显示“post_by”。如果有帮助。 –

回答

0

仔细检查您的字段名, “post_by” 似乎是实地,但你已经加入“posted_by”。

另外,我建议阅读mysqli和注射预防早,而不是晚,最好在我看来第一次正确地学习它。