解析错误:语法错误,第76行/srv/disk1/1185368/www/mashcraft.atwebpages.com/profile.php中的意外T_VARIABLE

时间:2012-11-13 07:59:03

标签: php sql

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

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

4 个答案:

答案 0 :(得分:2)

请汇总你的字符串

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

建议:

1.学会防止MySQL注入:Good Link

2.建议不要使用扩展名来编写新代码。相反,应该使用mysqli或PDO_MySQL扩展。更多阅读:PHP Manual

答案 1 :(得分:0)

你错过了.

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

应该是:

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

答案 2 :(得分:0)

试试这个:

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

答案 3 :(得分: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()以转义输入字符串,但是即使这对SQL注入也不是100%有效,如here所述。