【问题标题】:PHP syntax differences from MySQL to SQL Server从 MySQL 到 SQL Server 的 PHP 语法差异
【发布时间】:2016-11-04 15:07:09
【问题描述】:

我一直在开发登录/注册系统,我已经在 MySQL 中进行了所有设置并完美运行,但我需要从 SQL SERVER 2008 运行它,所以我已经更改了连接,并且它的所有工作都与1 位,当用户单击电子邮件中的验证链接时,它不会验证用户,所以我认为某些语法不适用于 PHP7 和 SQL 服务器。

这是代码:

$stmt = $user->runQuery("SELECT userID,userStatus FROM tbl_users WHERE userID=:uID AND tokenCode=:code LIMIT 1");
$stmt->execute(array(":uID"=>$id,":code"=>$code));
$row=$stmt->fetch(PDO::FETCH_ASSOC);
if($stmt->rowCount() > 0){
some code...}
else{ error message...}

它跳过了 if 语句,只是给了我来自 else 的错误消息。

有什么我没有看到的明显错误吗?

在这一点上,任何帮助将不胜感激!

谢谢。

编辑:

如果有帮助,这是 IF 语句的代码...

if($row['userStatus']==$statusN)
    {
        $stmt = $user->runQuery("UPDATE po_users SET userStatus=:status WHERE userID=:uID");
        $stmt->bindparam(":status",$statusY);
        $stmt->bindparam(":uID",$id);
        $stmt->execute();   

        $msg = "
               <div class='alert alert-success'>
               <button class='close' data-dismiss='alert'>&times;</button>
                  <strong>WoW !</strong>  Your Account is Now Activated : <a href='index.php'>Login here</a>
               </div>
               ";   
    }
    else
    {
        $msg = "
               <div class='alert alert-error'>
               <button class='close' data-dismiss='alert'>&times;</button>
                  <strong>sorry !</strong>  Your Account is allready Activated : <a href='index.php'>Login here</a>
               </div>
               ";
    }

【问题讨论】:

  • 你显然看不到的是rowCount的手册
  • SQL SERVER 没有LIMIT,改用SELECT TOP
  • 既然你拿了,也许就count($row)吧。
  • 试过 SELECT TOP Vitalii,还是不行 :(
  • 你能告诉我们你有什么 SQL 错误吗?

标签: php mysql sql sql-server


【解决方案1】:

SQl 服务器没有限制。限制使用 mysql。而不是限制使用顶部。

参考:http://www.w3schools.com/sql/sql_top.asp

SELECT TOP 1 userID,userStatus FROM tbl_users WHERE userID=:uID AND tokenCode=:code

【讨论】:

    【解决方案2】:

    您需要TOP 1。你可能错过了 1.

    SELECT TOP 1 userID, userStatus 
    FROM tbl_users 
    WHERE userID=:uID AND tokenCode=:code
    

    【讨论】:

      【解决方案3】:

      所以这个错误表明你试图在一个布尔值上调用一个成员函数

      PHP 致命错误:未捕获的错误:在布尔值上调用成员函数 sqlsrv_num_rows()

      所以不是:

      $stmt->execute(array(":uID"=>$id,":code"=>$code));
      $row=$stmt->fetch(PDO::FETCH_ASSOC);
      if($stmt->rowCount() > 0){...
      

      试试这个:

      $result = $stmt->execute(array(":uID"=>$id,":code"=>$code));
      if($result->rowCount() > 0){
      $row = $stmt->fetch(PDO::FETCH_ASSOC);
      

      希望这会有所帮助!

      【讨论】:

      • 感谢您的帮助,但在我做出您建议的更改后,我在收到相同的布尔错误之前收到了一个新错误:[Mon Nov 07 08:37:13.165015 2016] [:error] [ pid 2884:tid 968] [client 10.11.1.78:52544] PHP Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in C:\\Apache24\\htdocs\\Login\ \signup.php 在第 21 行,引用者:10.11.1.224/Login/signup.php
      • 这是它抱怨的那一行:if($result->rowCount() > 0){
      猜你喜欢
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      • 2011-12-28
      • 2014-01-23
      • 2010-09-05
      • 1970-01-01
      • 1970-01-01
      • 2016-03-19
      相关资源
      最近更新 更多