2012-01-02 45 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) ...。這也是一個問題。 :-)