用PDO进行PHP搜索

用PDO进行PHP搜索,php,search,pdo,Php,Search,Pdo,我正在尝试将一个教程中的搜索函数从mysql转换为PDO。我需要在我的桌子里面搜索。以我有限的知识,我能够做到这一点。然而,仍然有一些事情我无法解决。我错过了什么? 搜索时,无论我搜索什么,我仍然没有得到结果 原创 if(isset($_GET['keywords'])){ $keywords = $db->escape_string($_GET['keywords']); $query = $db->query( "SELECT name, description

我正在尝试将一个教程中的搜索函数从mysql转换为PDO。我需要在我的桌子里面搜索。以我有限的知识,我能够做到这一点。然而,仍然有一些事情我无法解决。我错过了什么? 搜索时,无论我搜索什么,我仍然没有得到结果

原创
if(isset($_GET['keywords'])){

  $keywords = $db->escape_string($_GET['keywords']);

  $query = $db->query(
  "SELECT name, description
   FROM cars 
   WHERE name LIKE '%{$keywords}%' OR description LIKE '%{$keywords}%'
  ");
  ?>

  <div class="result-count">
    Found <?php echo $query->num_rows; ?> results.
  </div>

  <?php
  if($query->num_rows){
    while ($r = $query->fetch_object()) {
      ?>
      <div class="result">
        <a href="#"><?php echo $r->name; ?></a>
      </div>
  <?php
    }
  }
}
?>
if(isset($\u GET['keywords'])){
$keywords=$db->escape_字符串($_GET['keywords']);
$query=$db->query(
“选择名称、说明
来自汽车
其中名称为“{$keywords}%”或描述为“{$keywords}%”
");
?>
发现结果。
PDO版本/我的版本

if(isset($_GET['keywords'])){

  $keywords = $db->escape_string($_GET['keywords']);

  $query = $db->query(
  "SELECT name, description
   FROM cars 
   WHERE name LIKE '%{$keywords}%' OR description LIKE '%{$keywords}%'
  ");
  ?>

  <div class="result-count">
    Found <?php echo $query->num_rows; ?> results.
  </div>

  <?php
  if($query->num_rows){
    while ($r = $query->fetch_object()) {
      ?>
      <div class="result">
        <a href="#"><?php echo $r->name; ?></a>
      </div>
  <?php
    }
  }
}
?>
  <?php
  include 'inc/header.php';

if(isset($_GET['keywords'])){
  $keywords = $_GET['keywords'];

  $cars = $db->prepare("SELECT name, description FROM cars WHERE name LIKE '%{$keywords}%' OR description LIKE '%{$keywords}%'
  ");
  $cars->execute();

 ?>
<div class="result-count">
  Found <?php echo $cars->rowCount(); ?> results.
</div>

<?php
  if($cars->rowCount()){
    while($r = $cars->fetchObject()){
      ?>
      <div class="result">
        <a href="#"><?php echo $r->name; ?></a>
      </div>
  <?php
    }
  }
}
 ?>

这段代码会发生什么?您误用了准备好的语句。
$cars=$db->prepare(“从汽车中选择名称、描述,其中名称类似?或描述类似?”);
然后绑定,
$cars->execute(数组(“%”.$keywords.”,“%”.$keywords.”%'))
在两个查询中
关键字
都是字符串,不是变量,所以我不知道它是如何工作的。你几乎做到了,但你仍然可以接受mysql注入。彻底检查准备好的语句,尤其是绑定值的部分。当前:致命错误:未捕获错误:调用成员函数rowCount()在array.Stack trace上:#0{main}thrown您从PDO对象中重新分配了变量。
$cars=$cars->fetchAll(PDO::FETCH_ASSOC);
.while($r=$cars->fetchObject()){
也不需要/正在工作。您已经通过删除$cars=$cars->fetchAll->fetchAll(PDO::FETCH ASSOC)用
@chris85获取了;我没有得到任何错误,但我仍然没有从搜索中得到任何结果