PHP 数组 where 子句


PHP Array where clause

我的数组有多个类别,例如生日,婚礼等。我想随机选择类别等于生日的 4 个项目。并呼应这些价值观

  class Cake {
      //properties:database connection and table name
    private $conn;
    private $table_name ='cakes';
    //object properties: one for each field in our table
    public $id;
    public $name;
    public $category;
    public $price;
    public $description;
    public $thumb;
    public $large;

 public function __construct($db){
 //bring in the connection info, store it in this object's $conn property
     $this->conn = $db;
 }
/**
 * the readAll method gets all existing row data
 * @return  all the retrieved row data
 **/
 //if no public or private auto public
 function readAll(){
        $cols = array('id', 'name', 'category', 'price');
     //create a SQL query and run it, storing the data in a var $stmt
        $stmt = $this->conn->prepare('SELECT id, name, category,  description, price, thumb, large FROM '.$this->table_name.' ORDER BY RAND() LIMIT 4'); //this needs to be one or it will be multiple colls
        //run the query, getting the data and stuffing into $stmt
        $stmt->execute();
        //send info back to where readAll() was called
        return $stmt;
 }//end readAll();


     function readWed(){
        $cols = array('id', 'name', 'category', 'price');
     //create a SQL query and run it, storing the data in a var $stmt
        $stmt = $this->conn->prepare('SELECT id, name, category, description, price, thumb, large FROM '.$this->table_name.' WHERE category = Birthday ORDER BY RAND() LIMIT 4'); 
        $stmt->execute();
        //send info back to where readWed() was called
        return $stmt;
 }//end readWed();

这是我尝试放置值的地方,读取所有作品,但不使用 where 子句。 错误报告也不会输出。

    <?php
    ini_set('display_errors', 1);
    ini_set('display_startup_errors', 1);
    error_reporting(E_ALL);
                include_once('config/spc_database.php');
                include_once('object/cake.php');
                $database = new Database();
                $conn=$database->getConnection();
                $cake =  new Cake($conn);
                $stmt = $cake->readWed();
        ?>
    <div class="left-img">
    <?php  while($row = $stmt->fetch(PDO::FETCH_ASSOC)){   ?>
      <div class="element  hvr-grow">
      <?php echo "HELLOS"; ?>
      <a href="description.php?detailsid=<?php echo $row['id'];?>"> 
      <img class="imgurmob" src="img/
        <?php echo $row['category']; ?>/<?php echo $row['thumb']; ?>" alt="img-sub-category"> 
    </a>
    </div> 
    <?php    } ?>  

在 where 子句查询中,您使用的是字符串值Birthday,因此您必须需要在引号内使用此值作为:

"SELECT id, name, category, description, price, thumb, large FROM ".$this->table_name." WHERE category = 'Birthday' ORDER BY RAND() LIMIT 4"

代码示例:

$stmt = $this->conn->prepare("
SELECT id, name, category, description, price, thumb, large 
FROM ".$this->table_name." 
WHERE category =  'Birthday' 
ORDER BY RAND() 
LIMIT 4");