【问题标题】:How to private message system in php? [duplicate]如何在php中私信系统? [复制]
【发布时间】:2015-01-28 19:49:20
【问题描述】:

我需要一些关于我正在进行的项目的帮助。我正在尝试制作一个“简单”的消息系统。

很可能有一个愚蠢的小错误,但我找不到它提前谢谢,这是我的代码:

<?

session_start();
require_once('connect.php');

$name = $_SESSION['name'];

$q = "SELECT * FROM pm WHERE to = '$name'";

$r = mysqli_query($link,$q);

if(mysqli_num_rows($r)>0) {

while($row = mysqli_fetch_array($r,MYSQLI_ASSOC)){
echo $row['to'];
echo $row['from'];
echo $row['message'];

}
}

?>

【问题讨论】:

  • 检查这一行:SELECT * FROM pm WHERE to = '$name'"
  • 看看颜色高亮是怎么回事?这是一个线索。
  • 这个小词to会给你带来很大的麻烦。阅读此dev.mysql.com/doc/refman/5.5/en/reserved-words.html - 更不用说稍后会在from 造成严重破坏的另一个@
  • 这个小词给我带来了一整周的麻烦@Fred-ii- ;-) 但好消息是我可以看到水面,尽管我的头可能还没有完全高出水面。
  • @JayBlanchard 重新加载页面 ;-) 欢呼。保持安全和“干燥”。

标签: php message


【解决方案1】:

你有一个sql注入:看到这个问题:How can I prevent SQL injection in PHP?

另外,SELECT 语句中的引号是错误的

"SELECT * FROM pm WHERE to = '$name"';

应该是,并且在列名周围使用刻度:

"SELECT * FROM pm WHERE `to` = '$name'";

因为您使用的是 MySQL 保留字“to”。更多内容如下。

你可能应该得到一个更好的支持语法高亮的编辑器/IDE——就像你的问题一样,高亮是一团糟:What is the best IDE for PHP?

另外,您可能不应该使用“to”这个词作为列名:它是一个保留字:http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html(谢谢 :)

我们最终得到了

"SELECT * FROM pm WHERE recipient = '$name'";

【讨论】:

  • 感谢大家的帮助,但页面仍然出现此错误:- 警告:mysqli_num_rows() 期望参数 1 为 mysqli_result,布尔值在 /home/u184691447/public_html/inbox.php 中给出在第 30 行
  • 不客气@乔纳森 - 啊,现在情节变厚了。 ^
  • 哦!修复!看来数据库中的'to'这个词是保留的,谢谢大家,你们太棒了!
  • @CaolanMaguire 总是乐于以任何可能的方式提供帮助。您现在可以接受答案了。
猜你喜欢
  • 1970-01-01
  • 2014-01-02
  • 2011-06-02
  • 1970-01-01
  • 2011-03-28
  • 2013-05-19
  • 2011-09-14
  • 2014-12-23
  • 1970-01-01
相关资源
最近更新 更多