-1

请帮忙看看这段代码有什么问题?(第 76 行是中间那一行)

require("dbConfig.php");
$sql = 'SELECT * FROM dbUsers WHERE username='$_SESSION["valid_user"]'';
$r = mysql_query($sql);
4

4 回答 4

2

请连接你的字符串

$sql = 'SELECT * FROM dbUsers WHERE username="'.mysql_real_escape_string($_SESSION["valid_user"]).'"';

建议:

1.学会防止MySQL注入:好链接

2.不推荐使用Mysql扩展来编写新代码。相反,应该使用 mysqli 或 PDO_MySQL 扩展。更多阅读:PHP 手册

于 2012-11-13T08:02:21.593 回答
0

你错过.了:

$sql = 'SELECT * FROM dbUsers WHERE username='$_SESSION["valid_user"]'';

应该:

$sql = "SELECT * FROM dbUsers WHERE username='".$_SESSION["valid_user"]."'";
于 2012-11-13T07:59:46.120 回答
0

尝试这个:

$sql = 'SELECT * FROM dbUsers WHERE username='.$_SESSION["valid_user"];
于 2012-11-13T08:00:11.127 回答
0

试试这个(如果你清理用户输入,你将防止 SQL 注入):

<?php
require("dbConfig.php");
$sql = "SELECT * FROM dbUsers WHERE username='".filter_var(mysql_real_escape_string($_SESSION["valid_user"]),FILTER_SANITIZE_STRING)."'";
$r = mysql_query($sql);
?>

编辑:添加了 mysql_real_escape_string() 用于转义输入字符串,但即使这样也不是 100% 有效地防止 SQL 注入,如这里所讨论的。

于 2012-11-13T08:02:27.553 回答