【问题标题】:Why does my query return no rows with PDO? [duplicate]为什么我的查询没有返回带有 PDO 的行? [复制]
【发布时间】:2021-01-06 20:00:56
【问题描述】:

我正在使用 PHP 的 PDO 选项,但奇怪的是它不起作用。我认为是因为参数的绑定,但我不确定。谁能帮帮我。

if(isset($_POST['submit']))
{

    $query = "SELECT * FROM occasions WHERE naam IS NOT NULL";
    
    $stmt = $pdo->prepare($query);
    
    
    if (isset($_POST['merk'])) {
        $query .= " AND merk = :merk";
        
        $merk = $_POST['merk'];
        
        $stmt->bindParam(':merk', $merk);
    } 
    
    
    if($stmt->execute())
    {
        echo "query is executed";
        print_r($query);
    }
    else
    {
        echo "query is niet executed";
    }
    
    
    while($result = $stmt->fetch())
    {
        echo "<br>";
        echo $result['naam'];
    }
    
    
    
}

【问题讨论】:

  • 不要认为你需要关闭)在:merk)。此外,您应该只绑定与查询中相同的参数,因此如果您只有 1 个参数集,则应该只绑定该参数。
  • 我已经稍微更正了代码。你怎么看?

标签: php mysql pdo


【解决方案1】:

这是构建代码的更好方法。尝试这个。我相信这会奏效。

$merk = (!empty($_POST['merk']))?$_POST['merk']:null;
$brandstof = (!empty($_POST['brandstof']))?$_POST['brandstof']:null;

if(isset($_POST['submit'])){
  $query = "SELECT * FROM occassions WHERE naam IS NOT NULL";

  if($merk != null){
    $query .= " AND merk = :merk";
  }

  if($brandstof != null){
    $query .= " AND brandstof = :brandstof";
  }

  $stmt = $pdo->prepare($query);

  if($merk != null){
    $stmt-> bindValue(':merk', $merk);
  }

  if($brandstoff != null){
    $stmt-> bindValue(':brandstof', $brandstof);
  }

  $stmt-> execute();

  while($result = $stmt->fetch()){
    echo "<br>";
    echo $result['naam'];
  }
}

【讨论】:

  • 我已经编辑了答案...我忘了写while循环逻辑!
  • if($stmt->execute()) { echo "good"; } else { echo "不好"; }
  • 查询没有执行@RedStar
  • 您收到什么错误?您需要提及错误以让我理解并返回解决方案..只是说不工作不会有任何好处..
猜你喜欢
  • 2011-11-24
  • 1970-01-01
  • 2018-04-13
  • 2014-05-23
  • 2011-11-07
  • 2019-11-13
  • 2019-06-23
  • 2017-10-28
  • 1970-01-01
相关资源
最近更新 更多