2012-01-02 96 views
0

可能重复1分的结果:
mysql_num_rows(): supplied argument is not a valid MySQL result resource没有在PHP MySQL查询结果,而是通过phpMyAdmin的

这里的交易。我想打一个登录形式,但我一直recieving错误消息:

mysql_num_rows():提供的参数是不符合一个有效的MySQL结果资源14

我的代码如下所示:

if($_POST){ 
    ob_start(); 

    $fusuario = $_POST['fusuario']; 
    $fsenha = md5($_POST['fsenha']); 

    $sql = "SELECT * FROM usuario WHERE login='$fusuario' and senha='$fsenha'"; 

    $result=mysql_query($sql); 

    $count=mysql_num_rows($result); 
    $row=mysql_fetch_array($result); 
    if($count==1) 
    { 
     session_start(); 
     $_SESSION['admin_user'] = $fusuario; 
     $_SESSION['admin_id'] = $row['id_usuario']; 
     header("location:index.php"); 
    } 
    else { $erro = 1; } 

    ob_end_flush(); 
} 
?> 

当我从phpMyAdmin执行SELECT查询时,它返回1行,就像它应该。
当我通过PHP来做,没有行被返回。

任何想法?

+3

你连接到MySQL,我没有看到一个mysql_connect。还使用mysql_real_escape_string来防止SQL注入攻击;) – craig1231 2012-01-02 22:50:21

+1

OMG!我是多么愚蠢的人。 连接到数据库的代码是在SQL查询之后... 非常感谢! – 2012-01-02 22:52:44

+1

不要担心,即时通话在这里的经验!呵呵 – craig1231 2012-01-02 22:55:12

回答

1

看起来你的mysql_query()出现错误。检查什么MySQL正在返回的错误信息:

$result=mysql_query($sql) or die(mysql_error()); 
    $count=mysql_num_rows($result); 

我猜有一个与你的mysql的连接有问题...尝试明确地包括MySQL连接标识符:

mysql_query($sql,[INCLUDE LINK IDENTIFIER HERE]) 

如果您'不知道这是什么意思,读这个:http://php.net/manual/en/function.mysql-query.php

1

如果mysql_num_rows()说,$结果不是一个有效的资源,这可能是因为查询失败,并返回FALSE而不是资源。

运行SQL查询后,应始终检查错误。
见代码示例,在http://php.net/mysql_query


我从你的意见,你有你发出查询的时候没有打开的连接到数据库中看到检查if (!$result) ...。这也是一个问题。 :-)