PHP Array where子句

时间:2016-02-18 21:14:54

标签: php arrays 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    } ?>  

1 个答案:

答案 0 :(得分:3)

在您的where子句Query中使用字符串值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");