2012-07-01 28 views
2

右我已经确认查询SELECT * FROM mbgeust WHERE user_name = '{$name}' AND user_pass = SHA1('{$pass}')返回结果,但它返回说'显示行0 - 0(总数1,查询花了0.0005秒)'sould that not被行0 - 尽管该查询返回这里一排的事实为1时mysql_num_rows($mysql)返回0是我的全部代码sql显示行0 - 0(共1个)导致mysql_num_rows错误

<?php 
    session_start(); 
    include './inc/sql.php'; 
    if(!isset($_SESSION['loggedin'])){ 
     if(isset($_POST['submit'])){ 
      $name = mysql_real_escape_string($_POST['username']); 
      $pass = mysql_real_escape_string($_POST['password']); 
      sql_start(); 
      $mysql = mysql_query("SELECT * FROM mbgeust WHERE user_name = '{$name}' AND user_pass = SHA1('{$pass}')") 
       or die ("Error: ". mysql_error(). " with query ". $mysql); 
      if(mysql_num_rows($mysql) == 1){ 
       $_SESSION['loggedin'] = TRUE; 
       $_SESSION['name'] = $name; 
       header('refresh:3; URL = /'); 
       die('You are now logged in!'); 
      } 
      else{ 
       header('refresh:3; URL = /'); 
       die ('Password was probably incorrect!'); 
      } 
      sql_stop(); 
      } 
     echo "<form action='./' method='POST'> 
     Username: <br/> 
     <input type='text' name='username' /><br/> 
     Password: <br/> 
     <input type='password' name='password' /><br/> 
     <input type='submit' name='submit' value='Login'/> 
     </form>"; 
    } 
    else { 
     include 'main.php'; 
    } 
?> 

和sql.php

<?php 
    function sql_start(){ 
     global $con; 
     $con = mysql_connect("mackinnonsbakery.co.uk.mysql","mackinnonsbaker","UE9ux3cZ") 
      or die('Could not connect: ' . mysql_error()); 
     mysql_select_db("mackinnonsbaker", $con) 
      or die('Could not connect: ' . mysql_error()); 
    } 

    function sql_stop(){ 
     global $con; 
     mysql_close($con); 
    } 
?> 
+0

它因为我使用全球($ con)不是它 –

+0

我也试过mysqli,我得到了同样的结果 –

回答

1

您在sql_start()之前拨打mysql_real_escape_string,因此您没有活动的数据库连接 - 因此$name$pass可能设置为false。检查你的错误日志,你应该看到警告。

0

我已经切换到mysqli的,改变了sql_start/sql_stop分别在开始和分隔包含的文件最终页面的这个缝,如果有人知道如何解决这个问题而不去mysqli的提供答案的,因为它会帮助别人,这里是我的代码目前已经整理它:

<?php 
    session_start(); 
    include './inc/sql_start.php'; 
    if(!isset($_SESSION['loggedin'])){ 
     if(isset($_POST['submit'])){ 
      $name = $mysqli->real_escape_string($_POST['username']); 
      $pass = $mysqli->real_escape_string($_POST['password']); 
      $query = "SELECT * FROM mbgeust WHERE user_name = '{$name}' AND user_pass = SHA1('{$pass}')"; 
      if ($stmt = $mysqli->prepare($query)) { 
       $stmt->execute(); 
       $stmt->store_result(); 
       if($stmt->num_rows == 1){ 
        $_SESSION['loggedin'] = TRUE; 
        $_SESSION['name'] = $name; 
        header('refresh:3; URL = /'); 
        die('You are now logged in!'); 
       } 
       else{ 
        header('refresh:3; URL = /'); 
        die ('Password was probably incorrect!'); 
       } 
       $stmt->close(); 
      } 
     } 
     echo "<form action='./' method='POST'> 
     Username: <br/> 
     <input type='text' name='username' /><br/> 
     Password: <br/> 
     <input type='password' name='password' /><br/> 
     <input type='submit' name='submit' value='Login'/> 
     </form>"; 
    } 
    else { 
     include 'main.php'; 
    } 
    include './inc/sql_stop.php'; 
?> 

sql_start.php

<?php 
    $mysqli = new mysqli("mackinnonsbakery.co.uk.mysql", "mackinnonsbaker", "UE9ux3cZ", "mackinnonsbaker"); 
    if (mysqli_connect_errno()) { 
     printf("Connect failed: %s\n", mysqli_connect_error()); 
     exit(); 
    } 
?> 

sql_stop.php

<?php 
    $mysqli->close(); 
?> 

再次如果任何人有真正的解决办法,请张贴

相关问题