【问题标题】:sqlsrv_has_rows() ERROR PHP with MSSQLsqlsrv_has_rows() 错误 PHP 与 MSSQL
【发布时间】:2016-04-21 11:04:11
【问题描述】:

我的 php 页面有点小问题,我只是不明白。我是新手,我不太了解我的查询。当我尝试执行我的程序时,出现这样的错误

警告:sqlsrv_has_rows() 期望参数 1 是资源,布尔值 给定

这是我的代码:

<?php
    session_start();

    try{
    include 'connection.php';

    $username = $_POST['user'];
    $password = $_POST['pass'];

    //check if login form is filled
    if(empty($_POST['user']) || empty($_POST['pass'])){
    echo '<script type="text/javascript">alert("Connection established.");   </script>';
     }
    //search for user and password in the database
    $query = "SELECT * FROM [Emkaandb].[dbo].[tbl_clientslogin] WHERE email='{$username}' AND .password='{$password}' AND active='1'";
    $result = sqlsrv_query($conn, $query);
    if($result == true){
    die(print_r(sqlsrv_errors(),true));
     }
      if(sqlsrv_has_rows($result) !=1){
    echo '<script type="text/javascript">alert("Invalid email or password.");  </script>';
    }else{
     while($row = sqlsrv_fetch_array($result)){
        $_SESSION['name'] = $row['name'];

    }
    header("location: Profile.php");
    }

     }catch  (PDOException $e)
  {
    echo "Error!: " . $e->getMessage() . "
";
    die();
  }

?>

【问题讨论】:

  • 以防万一您不知道。 sqlsrv 函数与 PDO 函数无关。因此在这段代码中捕获 PDOExceptions 几乎没有用处。
  • 事实上,你必须明确地询问错误信息:sqlsrv_errors()。一旦你这样做了,你会发现你的 SQL 是无效的。
  • 顺便说一句,您的代码似乎允许使用魔术密码' OR 1=1--进行通用登录

标签: php html sql-server-2012-express


【解决方案1】:

$result 返回资源集id ?

【讨论】:

  • 我可以看到 if($result == true){ die(print_r(sqlsrv_errors(),true));那是死()?因为 $result 总是正确的......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-06-30
  • 2014-09-05
  • 2013-06-13
  • 2023-03-14
  • 1970-01-01
  • 1970-01-01
  • 2011-07-26
相关资源
最近更新 更多