Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用PDO和php正确获取对象_Php_Mysql_Pdo_Mysqli_Fetch - Fatal编程技术网

如何使用PDO和php正确获取对象

如何使用PDO和php正确获取对象,php,mysql,pdo,mysqli,fetch,Php,Mysql,Pdo,Mysqli,Fetch,我在我的网站上实现了一个搜索框,在我决定防范sql注入之前,这个搜索框工作得非常好。我决定使用PDO,因为很多人认为它比使用mysql\u string\u escape更好。当我试图从数据库中获取数据时,它什么也不返回,但我知道其中有记录 我的代码 db.php result.php 我得到了错误的undefined方法fetchAll,我发现需要安装一个驱动程序才能让fetchAll工作。这是我不想做的。如何正确地从数据库中获取数据?在本例中,您没有使用PDO连接到数据库,因此您试图在查询中

我在我的网站上实现了一个搜索框,在我决定防范sql注入之前,这个搜索框工作得非常好。我决定使用PDO,因为很多人认为它比使用mysql\u string\u escape更好。当我试图从数据库中获取数据时,它什么也不返回,但我知道其中有记录

我的代码

db.php

result.php


我得到了错误的undefined方法fetchAll,我发现需要安装一个驱动程序才能让fetchAll工作。这是我不想做的。如何正确地从数据库中获取数据?

在本例中,您没有使用PDO连接到数据库,因此您试图在查询中接收的数据无效

 while($list = $get_foo->fetchAll(PDO::FETCH_ASSOC))
学习如何使用PDO连接、检索和插入数据(以及准备语句,这是防止SQL注入的功能)的最佳地方是:


正如你们所说,我不是在创建PDO连接,而是在使用mysqli。很抱歉,我已经成功创建了PDO连接并重写了代码。现在很好用

解决方案:

db.php


您没有使用
PDO
,您在这里使用的是
mysqli
。@D4V1D好的,这是我第一次尝试。如何正确使用pdo?而且
fetchAll
不需要“安装驱动程序”。但是,在
while($list=…)
条件下,它没有意义。逐行获取通常就足够了,而且
foreach($result as$list)
会更简单(如果您使用的是PDO)。还可以使用herdoc代替繁琐的
echo..
字符串修补
         <?php

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

      $search_query = $_GET['user_query'];

      $get_foo = $mysqli->prepare("SELECT * FROM `food` WHERE `food_keywords` 
      LIKE ?");

       $search_query = "%".$search_query."%";

       $get_foo->bind_param('s',$search_query);


    $get_foo->execute();

    $obj = $get_foo->fetch();

    if($obj==0){

     echo "<h4>No results where found!</h4>";

      }

      //fetch results set as object and output HTML
      while($list = $get_foo->fetch())
     {
       $foo_id = $list['food_id'];

       echo '<div class="food">'; 
        echo '<form method="post" action="basket.php" id = "add-basket-form" 
         >';
        echo '<h4>'.$list['food_title'].'</h4>';
  echo '<div class="pic"><img src="admin/food_images/'.$list['food_image'].'" 
      width= "180" height= "160"></div>';
     echo "<p><b>£".$list['food_price']."</b></p>";
      echo '<div class="sp-quantity">
     <div class="sp-minus fff"> <a class="ddd">-</a> 
    </div><div class="sp-input"> <input type="text" name= "product_qty" class 
      ="quntity-input" value="1" /></div>
      <div class="sp-plus fff"> <a class="ddd">+</a> </div></div>';
    echo '<div class = "btn"><a href="info.php?foo_id='.$list['food_id'].'" 
          style="float:left">INFO</a></div>';
     echo '<div class = "add_b"><button>Add to Basket</button></div>';
        echo '<input type="hidden" name="food_code"   
         value="'.$list['food_id'].'" />';
        echo '<input type="hidden" name="type" value="add" />';
        echo '</form>';
        echo '</div>';
        }
             }

        ?>
           while($list = $get_foo->fetchAll(PDO::FETCH_ASSOC))
 while($list = $get_foo->fetchAll(PDO::FETCH_ASSOC))
          <?php
          $host   = 'localhost';
          $dbname = 'name';
          $username = "root";
          $password = "";
       $conn = new PDO('mysql:host=localhost;dbname=name', $username, 
       $password);
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

        ?>
       if (isset($_GET['search'])){

       $search_query = $_GET['user_query'];

      $stmt = $conn->prepare("SELECT * FROM `food` 
       WHERE `food_keywords` LIKE :search ");

       $search_query = "%".$search_query."%";

      $stmt->bindParam(':search',$search_query, PDO::PARAM_STR);


       $stmt->execute();


    //fetch results set as object and output HTML
    while($obj = $stmt->fetch())
    {
        //rest goes here

      }
          }
             ?>