繁体   English   中英

While循环停留在第一个查询结果上

[英]While loop stuck on first query result

我对php比较陌生,并且正在转移我写给OOP的搜索引擎。

相关的SQL连接代码/ sqlconnect1类:

    public function query($query){
    $this->stmt = $this->dbh->prepare($query);
    }

    public function bind($param, $value, $type = null){     
        if (is_null($type)) {
            switch (true) {
                case is_int($value):
                    $type = PDO::PARAM_INT;
                    break;
                case is_bool($value):
                    $type = PDO::PARAM_BOOL;
                    break;
                case is_null($value):
                    $type = PDO::PARAM_NULL;
                    break;
                default:
                    $type = PDO::PARAM_STR;
            }
        }

        $this->stmt->bindValue($param, $value, $type);
    }
    public function execute(){
        return $this->stmt->execute();
    }

    public function resultset(){
        $this->execute();
        return $this->stmt->fetch(PDO::FETCH_ASSOC);
    }

While循环:

$search = new LoadSearch;
$sqlconnect1 = new sqlconnect1;
$sqlconnect1->query("SELECT * FROM data1 WHERE address_city LIKE 'austin' AND address_zip LIKE '78758'");

    //Assign Variables and Display Record Results
    while ($row1 = $sqlconnect1->resultset()){
    $Name1=$row1['name'];
    $Address1=$row1['address_1'];
    $City1=$row1['address_city'];
    $State1=$row1['address_state'];
    $ZIP1=$row1['address_zip'];
    $Country1=$row1['address_country'];
    $Phone1=$row1['phone'];
    $Website1=$row1['website'];
    $Category_11=$row1['category_1'];
    $Category_21=$row1['category_2'];
    echo"

    <!--Table 2-->  

    <table class='table2'>

        <tr>
            <td></td><td><b>$Name1</b></td>
        </tr>

        <tr>
            <td></td><td>$Address1, $City1, $State1 $ZIP1</td>
        </tr>

        <tr>
            <td></td><td>$Country1</td>
        </tr>

        <tr>
            <td></td><td>$Phone1</td>
        </tr>

        <tr>
            <td></td><td>$Category_11</td>
        </tr>

    </table>";

每次加载页面时,它都会无限期地重复第一个查询结果,并且永远不会超出第一个结果。 任何建议将不胜感激。 在程序上,类似的设置也可以正常工作。

删除$this->execute()调用,这是因为您在每次循环迭代执行时调用 ,然后进行fetch 这样,您将始终检索相同的结果(第一行)

public function resultset(){
    // $this->execute(); -- Remove this line
    return $this->stmt->fetch(PDO::FETCH_ASSOC);
}

显然,您需要在while循环之前调用$sqlconnect1->execute()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM