我正在为我正在开展的项目提供一些帮助。我正在尝试建立一个“简单”的消息系统。
最有可能是一个愚蠢的小蠢虫,但我提前感谢它找不到它,这是我的代码:
<?
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'];
}
}
?>
答案 0 :(得分:3)
你有一个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'";