require_once 'db.php';
$user = strstrip($_GET['user']);
$pass = strstrip($_GET['pass']);
$query='SELECT * FROM users WHERE name=\''.$user.'\' AND pass=\''.$pass.'\';';
$result=mysql_query($query);
if(!$result){
die('请输入正确的密码');
}
if(mysql_num_rows($result) <= 0){
die('请输入正确的密码');
}
这段代码中,user和pass为什么左右有点呢?$query='SELECT * FROM users WHERE name=\''.$user.'\' AND pass=\''.$pass.'\';';语句中\''.$user.'\'和\''.$pass.'\'为什么表示成这样呢?

解决方案 »

  1.   

    \ 表示转义,使用\' 表示 使用 '
    ‘ 是不能解析 php变量的,所以要用 '.$user.' 来拼接
    执行的sql就是这样子
    SELECT * FROM users WHERE name='xxx' AND pass='xxx'
    也可以用 “ 
    "SELECT * FROM users WHERE name='$user' AND pass='$pass'";
      

  2.   

    $query='SELECT * FROM users WHERE name=\''.$user.'\' AND pass=\''.$pass.'\';';语句中\''.$user.'\'和\''.$pass.'\'\'表示'
    因为'是特殊字符,需要转意才可以使用。实际上不用这么复杂,
    改成这样就可以了。$query="SELECT * FROM users WHERE name='".$user."' AND pass='".$pass."'";
      

  3.   


    //这样最方便
    $query="SELECT * FROM users WHERE name='{$user}' AND pass='{$pass}‘";
      

  4.   

    1.因为他的$user 和 $password 都是字符串 sql中查询字符串条件对应的 sql参数要假引号 单双无所谓  如select * from a where name = 'zhansgan'2.在php中,被单引号包裹的变量会原样输出.双引号包起来的会被解析 如 $a = 1; 
    echo ‘$a’;//$a
    echo "$a";//1他的sql语句是单引号包起来的,为了解析其中的变量 所以要增加双引号3.单引号可以包括双引号 双引号也可以包单引号  但是不能出现单引号包单引号的情况 双引号同
    这样是错误的echo """;//双引号不能包双引号 单引号一样但是有时候我们必须在双引号中输出双引号  这时候就有一个转义字符\  上述代码可以修改为echo "\"";//输出"双引号
      

  5.   

    $query='SELECT * FROM users WHERE name=\''.$user.'\' AND pass=\''.$pass.'\';';为什么user左右不是对称的呢?
      

  6.   

    没有不对称,你要看清楚那个是双引还是两个单引
    $query="SELECT * FROM users WHERE name='".$user."' AND pass='".$pass."'";
    这样写就好了,清晰,建议不要用\'的写法。