为什么我写的php代码不执行sql语句呢,请大侠指点。

<?php$username=$_POST['username']; 代码如下:
$password=$_POST['password']; $conn=mysql_connect ("localhost","root","2295371c."); if ( !$conn) { die ("连接失败!".mysql_errno()); } mysql_query ("set names utf8",$conn) or die ("编码格式错误!".mysql_errno()); mysql_select_db("demodb",$conn) or die ("连接数据库错误!".mysql_errno()); $sql="select password from users where username=$username"; $res=mysql_query($sql,$conn); if ($row=mysql_fetch_assoc($res)){ if ($row=['password']==md5($password)){ header ("location:123.php"); exit(); } }// header ("location: fail.php"); exit(); mysql_free_result($res); mysql_close($conn);?>
数据库表中的内容:

var_dump($sql);在页面中显示的是:string(49) "select password from users where username=changgy"
var_dump($res);在页面中显示的是:bool(false) 为什么会这样呢?PHP怎么不执行sql语句呢?请大侠指点。

程序执行了, username=changgy 要加上引号 表示数据类型是字符串,不加引号的的话,这条查询的sql是错误的, $res是接收不到返回值的,所以会返回一个false,加个引号就好了追问

加上引号后,还是跳转到 fail.php页面,没有跳转到123.php页面。我感觉不是这里的问题。

追答

if ($row=['password']==md5($password)){
header ("location:123.php");
exit();
}

你这里的$row=['password']==md5($password) 是什么意思? 应该是$row['password']吧

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-09-19
 $sql="select password from users where username='$username'";

$username 是个字符串 ,要单引号引起来。

望采纳 Thx

追问

加上引号后,还是没成功。var_dump($sql)后页面出现:string(51) "select password from users where username='changgy'"

var_dump($res)后页面出现: resource(4) of type (mysql result)。

追答

var_dump($res) 是对象资源,

$res=mysql_query($sql,$conn) or die(mysql_error());
试试

追问

不屏蔽这句话:header ("location: fail.php");跳转到fail.php页面,屏蔽后显示空白页。

本回答被网友采纳
第2个回答  2014-09-19
$username 要加上单引号追问

还是不可以。这里应该没问题。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网