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.'\'为什么表示成这样呢?
解决方案 »
- array_slice()与array_splice()这两个函数的区别是什么,突然糊涂了
- Call to a member function fetch_row() on a non-object的问题
- 关于apache中url重写的小问题
- php left join 问题。
- 请问htmlentities(urlencode($a))
- 好害怕啊,大家进来帮忙吧。
- 谁做过PHP与WEBSERVICES的东西 给讲讲
- 今天快气死了,php的ftp上传害死了,白忙活一天
- 求教在php程序中调用mysqldump问题
- 如果打开数据库的链接,而不关闭会怎样?
- mysql_connect() in D:\PHP\Web\test.php on line 6的问题
- php 3des的问题求助!
‘ 是不能解析 php变量的,所以要用 '.$user.' 来拼接
执行的sql就是这样子
SELECT * FROM users WHERE name='xxx' AND pass='xxx'
也可以用 “
"SELECT * FROM users WHERE name='$user' AND pass='$pass'";
因为'是特殊字符,需要转意才可以使用。实际上不用这么复杂,
改成这样就可以了。$query="SELECT * FROM users WHERE name='".$user."' AND pass='".$pass."'";
//这样最方便
$query="SELECT * FROM users WHERE name='{$user}' AND pass='{$pass}‘";
echo ‘$a’;//$a
echo "$a";//1他的sql语句是单引号包起来的,为了解析其中的变量 所以要增加双引号3.单引号可以包括双引号 双引号也可以包单引号 但是不能出现单引号包单引号的情况 双引号同
这样是错误的echo """;//双引号不能包双引号 单引号一样但是有时候我们必须在双引号中输出双引号 这时候就有一个转义字符\ 上述代码可以修改为echo "\"";//输出"双引号
$query="SELECT * FROM users WHERE name='".$user."' AND pass='".$pass."'";
这样写就好了,清晰,建议不要用\'的写法。