请问一个问题,如下:
<?php
$query="select password from master where name=$name ";
$ptconn=mysql_connect(218.6.35.162,root,);
mysql_select_db(test);
$res=mysql_query($query,$ptconn);
$arr = mysql_fetch_array($res);{
if ($arr[name]<>$name) {
echo "对不起,请输入正确的用户名";
}
else if ($arr[password]<>$password){
echo "对不起,请输入正确的密码";
}
else {
include "./depot2.php";
}
}
?>
运行后显示错误为:
Warning: Supplied argument is not a valid MySQL result resource in /usr/local/apache/htdocs/kaada/depot/depot1.php on line 7
$query="select password from master where name=$name ";
这一句中没有指明要查询出name,但是后面,也就是第七行$arr[name]<>$name却在使用name,所以出错。
修改为$query="select name,password from master where name=$name ";
if ($arr["name"]<>$name) {
这样试试
那就是没有找到数据了。解决办法:屏蔽
在你的数据库函数前加上@,如@mysql_query()
$query="select password from master where name=$name";
你提供的参数不对~~
改为这样~~~
<?php
$query="select password from master where name=$name ";
mysql_connect(218.6.35.162,root,);
mysql_select_db(test);
$res=mysql_query($query);//注意这里!!!
$arr = mysql_fetch_array($res);{
if ($arr[name]<>$name) {
echo "对不起,请输入正确的用户名";
}
else if ($arr[password]<>$password){
echo "对不起,请输入正确的密码";
}
else {
include "./depot2.php";
}
}
?>
请查一下数据库name字段的类型,如果是char/varchar类型请把sql语句改为
$query="select name,password from master where name=$name";
$ptconn=mysql_connect(218.6.35.162,root,);
@mysql_select_db("test");
isset($_POST[name])?$name=$_POST[name]:$name=NULL;
isset($_POST[password])?$password=$_POST[password]:$password=NULL;
$sql = "select * from master where name=$name && password=$password";
$res = @mysql_query($query,$ptconn);
$num = @mysql_num_rows($res)
$num>0?include "./depot2.php":echo "对不起,没有匹配的用户名和密码!";
//可以在你的基础上改一下
$query="select password,name from master where name=$name ";
$ptconn=@mysql_connect(218.6.35.162,root,);
@mysql_select_db(test);
$res = @mysql_query($query,$ptconn);
$arr = @mysql_fetch_array($res);
if ($name!=NULL&&$arr[name]<>$name)
{
echo "对不起,请输入正确的用户名";
}
elseif ($password!=NULL&&$arr[password]<>$password)
{
echo "对不起,请输入正确的密码";
}
else
{
include "./depot2.php";
}
//试试先