微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何 PDO 查询以检索与数组中的值匹配的行

如何解决如何 PDO 查询以检索与数组中的值匹配的行

我有一个表,其中包含由逗号分隔的值的 nearattractions 列。例如A001,A002

我正在查询该列,然后将内容转换为名为 $NearbyAttractionsArray 的数组。

print_r($NearbyAttractionsArray);

数组 ([0] => A001 [1] => A003)

我想运行 PDO sql 查询来查找与数组的每个值匹配的记录,然后在循环中输出它们。

$arrayQuery = $this->con->prepare("SELECT attid,attTitle,attThumbnail,AttTagline FROM 景点 WHERE attid=$NearbyAttractionsArray AND attStatus=1");

$arrayQuery->execute();

当我尝试此操作时,它会将 $NearbyAttractionsArray 转换为名为 array 的字符串...

为 attId 匹配数组中的一个值的每一行输出值 attid、attTitle、attThumbnail、AttTagline 的正确语法是什么?

我怀疑需要某种 foreach 循环,但找不到将其编写为 PDO 语句的正确方法

非常感谢

我的完整课程代码是:

<?PHP 

class NearbyAttractionsprovider {

private $con,$attId;

    public function __construct($con,$attId) {
        $this->con = $con;
        $this->attId = $attId;
    } // end of constructor


    public function createNearbyAttractionsList($con,$attId) {
        $query = $this->con->prepare("SELECT nearbyAttractions FROM attractions WHERE attId=:attId");
            $query->bindParam(":attId",$attId);
            $query->execute();

            $this->sqlData = $query->fetch(PDO::FETCH_ASSOC);
            $NearbyAttractions = $this->sqlData["nearbyAttractions"];
            $NearbyAttractionsRemoveCommas = str_replace(',','',$NearbyAttractions);
            $NearbyAttractionsArray = str_split($NearbyAttractionsRemoveCommas,4);

            print_r($NearbyAttractionsArray);

            $CountNearbyAttractions = sizeof($NearbyAttractionsArray);

            if($NearbyAttractionsArray[0] != "") {
                $results = "<h3>There are $CountNearbyAttractions Nearby Attractions</h3>";

                $arrayQuery = $this->con->prepare("SELECT attid,AttTagline FROM attractions WHERE 
                                attid=$NearbyAttractionsArray AND attStatus=1");
                $arrayQuery->execute();

                $results .= "<div class='nearbyAttractionsItemsContainer'>";
                while($row = $arrayQuery->fetchAll(PDO::FETCH_ASSOC)) {
                        $id = $row["attid"];
                        $img = $row["attThumbnail"];
                        $title = $row["attTitle"];
                        $tagline = $row["AttTagline"];

                $results .= "<div class='nearbyAttractionListItem'>
                                <a href='Attraction.PHP?attId=$id&title=$title' data-AttractionId='$id' 
                                class'NearbyAttractionItem-url'>
                                <img class='NearbyAttractionItem-thumbnail' src='$img' height='220' width=300'>
                                <h3 class='NearbyAttractionItem-title'>$title</h3>
                                <p class='NearbyAttractionItem-tagline'>$tagline</p>
                                </a>
                            </div>";
                } // End of while loop
            $results .= "</div>"; // End of nearbyAttractionsItemsContainer

            } // End of IF statement

            else {
                $results = "<h3>There are No Nearby Attractions</h3>";
            } // End of Else statement

        return $results;         

    } // End of public function createNearbyAttractionsList

} // End pf class NearbyAttractionsprovider

解决方法

您的查询应如下所示:

SELECT attid,attTitle,attThumbnail,AttTagline 
FROM attractions 
WHERE attid IN('A001','A003')
AND attStatus=1

当然,我假设 attid 存储原子值。要将数组项转换为字符串,您可以使用 foreach() loopimplode() function。在第二种情况下,您需要在加入之前用撇号包裹它。

,

折腾了好几个小时,它与 foreach 循环一起工作。

<?php 
    
    class NearbyAttractionsProvider {
    
    private $con,$attId;
    
        public function __construct($con,$attId) {
            $this->con = $con;
            $this->attId = $attId;
        } // end of constructor
    
    
        public function createNearbyAttractionsList($con,$attId) {
            $query = $this->con->prepare("SELECT nearbyAttractions FROM attractions WHERE attId=:attId");
                $query->bindParam(":attId",$attId);
                $query->execute();
    
                $this->sqlData = $query->fetch(PDO::FETCH_ASSOC);
                $NearbyAttractions = $this->sqlData["nearbyAttractions"];
                $NearbyAttractionsRemoveCommas = str_replace(',','',$NearbyAttractions);
                $NearbyAttractionsArray = str_split($NearbyAttractionsRemoveCommas,5);
    
                $CountNearbyAttractions = sizeof($NearbyAttractionsArray);
    
                if($NearbyAttractionsArray[0] != "") {
                    $results = "<h3>There are $CountNearbyAttractions Nearby Attractions</h3>";
    
                    foreach($NearbyAttractionsArray as $row) {
    
                        $arrayQuery = $this->con->prepare("SELECT attId,AttTagline FROM attractions WHERE 
                                    attId=:row AND attStatus=1");
                        $arrayQuery->bindParam(":row",$row);
                        $arrayQuery->execute();
    
                        $results .= "<div class='nearbyAttractionsItemsContainer'>";
                        while($row = $arrayQuery->fetch(PDO::FETCH_ASSOC)) {
                                $id = $row["attId"];
                                $img = $row["attThumbnail"];
                                $title = $row["attTitle"];
                                $tagline = $row["AttTagline"];
    
                        $results .= "<div class='nearbyAttractionListItem'>
                                        <a href='Attraction.php?attId=$id&title=$title' data-AttractionId='$id' 
                                        class'NearbyAttractionItem-url'>
                                        <img class='NearbyAttractionItem-thumbnail' src='$img' height='220' width=300'>
                                        <h3 class='NearbyAttractionItem-title'>$title</h3>
                                        <p class='NearbyAttractionItem-tagline'>$tagline</p>
                                        </a>
                                    </div>";
                        } // End of while loop
                    $results .= "</div>"; // End of nearbyAttractionsItemsContainer
                    } // End of foreach loop
                    
                } // End of IF statement
    
                else {
                    $results = "<h3>There are No Nearby Attractions</h3>";
                } // End of Else statement
    
            return $results;         
    
        } // End of public function createNearbyAttractionsList
    
    } // End pf class NearbyAttractionsProvider

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?