Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.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
Php 无效的forEach()_Php_Pdo - Fatal编程技术网

Php 无效的forEach()

Php 无效的forEach(),php,pdo,Php,Pdo,我有一个数据库,存储用户根据日期添加的读数,我想根据最近添加的读数在HTML页面上显示读数,因此我修改了我的语句,如下所示: public function getElecReadings(){ try { $stmt = $this->dbconn->prepare("SELECT ElecReadingID, ElecUsage, DateAdded FROM elec_readings ORDER BY DESC WHERE Accoun

我有一个数据库,存储用户根据日期添加的读数,我想根据最近添加的读数在HTML页面上显示读数,因此我修改了我的语句,如下所示:

public function getElecReadings(){
        try {
            $stmt = $this->dbconn->prepare("SELECT ElecReadingID, ElecUsage, DateAdded FROM elec_readings ORDER BY DESC WHERE AccountNumber = '" . $_SESSION['user_session'] . "'");
            $stmt->execute();
            return $stmt;
        } catch (Exception $e) {

        }
    }
public function getElecReadings(){
    try {
        $stmt = $this->dbconn->prepare("SELECT ElecReadingID, ElecUsage, DateAdded FROM elec_readings WHERE AccountNumber = '" . $_SESSION['user_session'] . "' ORDER BY DESC");
        $stmt->execute();
        return $stmt;
    } catch (Exception $e) {

    }
}

<?php
    if (!empty($elec_readings)):
     foreach ($elec_readings as $elec_reading): ?>
        <tbody>
            <tr>
                <td><?php echo $elec_reading['ElecUsage']; ?></td>
                <td><?php echo $elec_reading['DateAdded']; ?></td>
            </tr>
        ?php
    endforeach;
    endif;
?>
然而,一旦我添加了
orderby
子句,我似乎在我的HTML页面上得到了
警告:为foreach()提供的参数无效

<?php
        foreach ($elec_readings as $elec_reading): ?>
            <tbody>
                <tr>
                    <td><?php echo $elec_reading['ElecUsage']; ?></td>
                    <td><?php echo $elec_reading['DateAdded']; ?></td>
                </tr>
            ?php
        endforeach;
    ?>

?php
endforeach;
?>
知道为什么会这样吗

试着这样做:

public function getElecReadings(){
        try {
            $stmt = $this->dbconn->prepare("SELECT ElecReadingID, ElecUsage, DateAdded FROM elec_readings ORDER BY DESC WHERE AccountNumber = '" . $_SESSION['user_session'] . "'");
            $stmt->execute();
            return $stmt;
        } catch (Exception $e) {

        }
    }
public function getElecReadings(){
    try {
        $stmt = $this->dbconn->prepare("SELECT ElecReadingID, ElecUsage, DateAdded FROM elec_readings WHERE AccountNumber = '" . $_SESSION['user_session'] . "' ORDER BY DESC");
        $stmt->execute();
        return $stmt;
    } catch (Exception $e) {

    }
}

<?php
    if (!empty($elec_readings)):
     foreach ($elec_readings as $elec_reading): ?>
        <tbody>
            <tr>
                <td><?php echo $elec_reading['ElecUsage']; ?></td>
                <td><?php echo $elec_reading['DateAdded']; ?></td>
            </tr>
        ?php
    endforeach;
    endif;
?>
公共函数getElecReadings(){
试一试{
$stmt=$this->dbconn->prepare(“选择ElecReadingID,ElecUsage,DateAdded FROM elec_readings,其中AccountNumber=””)“$_SESSION['user_SESSION']。”“'ORDER BY DESC”);
$stmt->execute();
返回$stmt;
}捕获(例外$e){
}
}
?php
endforeach;
endif;
?>
试着这样做:

public function getElecReadings(){
        try {
            $stmt = $this->dbconn->prepare("SELECT ElecReadingID, ElecUsage, DateAdded FROM elec_readings ORDER BY DESC WHERE AccountNumber = '" . $_SESSION['user_session'] . "'");
            $stmt->execute();
            return $stmt;
        } catch (Exception $e) {

        }
    }
public function getElecReadings(){
    try {
        $stmt = $this->dbconn->prepare("SELECT ElecReadingID, ElecUsage, DateAdded FROM elec_readings WHERE AccountNumber = '" . $_SESSION['user_session'] . "' ORDER BY DESC");
        $stmt->execute();
        return $stmt;
    } catch (Exception $e) {

    }
}

<?php
    if (!empty($elec_readings)):
     foreach ($elec_readings as $elec_reading): ?>
        <tbody>
            <tr>
                <td><?php echo $elec_reading['ElecUsage']; ?></td>
                <td><?php echo $elec_reading['DateAdded']; ?></td>
            </tr>
        ?php
    endforeach;
    endif;
?>
公共函数getElecReadings(){
试一试{
$stmt=$this->dbconn->prepare(“选择ElecReadingID,ElecUsage,DateAdded FROM elec_readings,其中AccountNumber=””)“$_SESSION['user_SESSION']。”“'ORDER BY DESC”);
$stmt->execute();
返回$stmt;
}捕获(例外$e){
}
}
?php
endforeach;
endif;
?>

是。您的SQL查询现在已损坏。订单是在何处关闭后发出的

(SELECT ElecReadingID, ElecUsage, DateAdded FROM elec_readings WHERE [your_condition] ORDER BY [Your_Field] DESC|ASC ");

Foreach显示错误导致SQL查询失败,并且
$elec\u reads
为空(或FALSE)

是。您的SQL查询现在已损坏。订单是在何处关闭后发出的

(SELECT ElecReadingID, ElecUsage, DateAdded FROM elec_readings WHERE [your_condition] ORDER BY [Your_Field] DESC|ASC ");

Foreach显示错误导致SQL查询失败,
$elec\u reads
为空(或FALSE)

由于查询无效,您将收到
警告
,如果要使用ORDER BY with WHERE子句,则需要遵循以下顺序:

SELECT .. FROM .. WHERE .. ORDER BY ..
修改的查询:

$stmt = $this->dbconn->prepare("
SELECT ElecReadingID, ElecUsage, DateAdded 
FROM elec_readings 
WHERE AccountNumber = '" . $_SESSION['user_session'] . "' 
ORDER BY ElecReadingID DESC");

请注意,您还需要指定更改顺序所需的列,在上面的示例中,我使用的是
order BY DESC

中的
ElecReadingID
列,因为您的查询无效,如果要使用order BY with WHERE子句,则需要遵循以下顺序:

SELECT .. FROM .. WHERE .. ORDER BY ..
修改的查询:

$stmt = $this->dbconn->prepare("
SELECT ElecReadingID, ElecUsage, DateAdded 
FROM elec_readings 
WHERE AccountNumber = '" . $_SESSION['user_session'] . "' 
ORDER BY ElecReadingID DESC");


注意,您还需要指定更改顺序所需的列,在上面的示例中,我使用的是
orderbydesc

中的
ElecReadingID
列,您没有从结果集中获取数据!!那么,
$elec_readings
包含什么呢?@Saty这是不必要的,
PDOStatement
类实现了
可遍历的
,所以你可以循环它来获得结果。谢谢@jeroen提供的信息。我会记住这件事@T91我已回滚您的编辑,因为如果您更正问题本身中的错误,答案将不再有意义。您没有从结果集中获取数据!!那么,
$elec_readings
包含什么呢?@Saty这是不必要的,
PDOStatement
类实现了
可遍历的
,所以你可以循环它来获得结果。谢谢@jeroen提供的信息。我会记住这件事@T91我已经回滚了您的编辑,因为如果您更正问题本身中的错误,答案将不再有意义。现在没有显示任何内容,只是一个空表。您的查询不会返回任何内容。您的查询中有一些问题。当我在
WHERE
条款之后添加
ORDER BY
时,它会起作用。这是规则
orderby
WHERE
之后。现在不显示任何内容,只显示一个空表您的查询不返回任何内容。您的查询中有一些问题。当我在
WHERE
条款之后添加
ORDER BY
时,它会起作用。这是规则<代码>按
排序,在
WHERE
之后。这似乎可行,但我只想限制添加的最新3个,当我添加
限制3
时,它会显示3,但不会显示最后一个3@T91您似乎没有按任何字段排序,请检查答案中的代码。编辑了我的原始帖子,这回答了我的问题!这似乎可行,但我只想限制最近添加的3,当我添加
限制3
时,它会显示3,但不会显示最后一个3@T91您似乎没有按任何字段排序,请检查答案中的代码。编辑了我的原始帖子,这回答了我的问题!