【问题标题】:When I run this code it does not display any result from the query当我运行此代码时,它不会显示查询的任何结果
【发布时间】:2014-02-02 16:02:37
【问题描述】:

查询不产生任何结果。变量 response 应该保存查询结果,但是当我使用 var_dump 测试它包含它时,它显示它是空的。

 try
 {
    $bdd = new PDO('mysql:host=localhost;dbname=ems', 'root', '');
 } catch(Exception $e)
 {
    die('Erreur : '.$e->getMessage());
 }
 $code=123456;

 $query = $bdd->prepare('SELECT Code,sender FROM info WHERE Code = ?');
 //,reciever,origin,destination,transit
 $query->execute(array($code));
 if($query->fetchColumn())
 {
     echo"good";
     while($reponse = $query->fetch()){
         var_dump($reponse);

         echo"good";
         echo $reponse['sender'];
     }

   } else{
     echo" The Code entered  was not  found please verify and  enter again";
 }

【问题讨论】:

  • 直接在 SQL shell 中运行您的查询。有结果吗?
  • 检查 $query->execute 是否返回 true。如果没有,请使用$bdd->errorInfo 看看有什么问题。
  • 打印出来的“好”吗?如果是这样,可能是因为fetchColumn 占用了您打算阅读的行。
  • 检查你的牙套。我注意到您有 5 个大括号,这意味着某些东西没有正确闭合。 (您的 if 块是否缺少右括号??
  • 请问我如何检查 $query->execute 恢复为真

标签: php database pdo


【解决方案1】:

我不确定这是否只是您的代码中的拼写错误,但我注意到了这段代码:

if($query->fetchColumn())
{
    echo"good";
    while($reponse = $query->fetch()){
     var_dump($reponse);

     echo"good";
     echo $reponse['sender'];
    }

else{
 echo" The Code entered  was not  found please verify and  enter again";
}
}

查看您的代码(和您的评论),您有一个用于if 语句的左大括号{,然后是一个用于while 循环的左大括号。然后是一个右括号。右大括号 } 用于 while 循环。然后你有一对else 块的大括号。在else 块之后还有另一个}。尝试在else 块之前添加},并在else 块之后删除} 之一。 else 块不应嵌套在 if 块中(如果我完全理解你的话)。这是语法错误。

代码的外观:

if($query->fetchColumn())
{
    echo"good";
    while($reponse = $query->fetch()){
     var_dump($reponse);

     echo"good";
     echo $reponse['sender'];
    }
}
else{
 echo" The Code entered  was not  found please verify and  enter again";

}

【讨论】:

  • 这是一个拼写错误,因为我的代码在 else 之后有两个 close }}
  • 好的,编辑您的原始问题。但是,这仍然是一个语法错误。我已编辑我的答案以反映您的评论。
猜你喜欢
  • 2018-12-09
  • 2020-10-11
  • 1970-01-01
  • 2018-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-21
  • 1970-01-01
相关资源
最近更新 更多