【问题标题】:foreach array keeps returning the first value?foreach 数组不断返回第一个值?
【发布时间】:2014-07-05 15:17:08
【问题描述】:

首先我不知道php,我当然不知道sql或wordpress如何与之交互,但我必须使用php等,所以我在这里。所以请尽量把事情解释清楚,简单。

我在我的 sql wordpress 表中添加了三个值。两个值共享相同的 room_id (1),第三个值为 (2)。它们在表中都有不同的开始和结束日期。我试图先遍历每个 room_id,检查日期,然后再移动到下一个房间。我有更多关于这个函数的代码,但本质上我的问题是我似乎只在每次迭代时打印出数组的第一个值。代码如下:

<?php 
/*Plugin Name: HotelMania Functions*/
function checkRoom() {
    global $wpdb;
    $query = "SELECT * FROM hm_booking ORDER BY room_id DESC";
    $rooms = $wpdb->get_results($query);    
    foreach ($rooms as $room) {
       $test= $wpdb->get_var("SELECT room_id FROM hm_booking");
       echo $test;
}    
}
add_shortcode('TEST', 'checkRoom');
?>

当我尝试使用 room_id 或 start_date 测试该值时,我不断得到表中的第一个值。但我认为我的 sql 是正确的,因为它在数据库中工作。请有人可以帮助我阅读并似乎无法弄清楚我做错了什么。

提前致谢。

【问题讨论】:

    标签: php sql arrays wordpress foreach


    【解决方案1】:

    get_results 获得$rooms 后,您无需使用get_var 运行另一个查询。

    例如,获取room_id 并将其放入$test,而不是

    $test= $wpdb->get_var("SELECT room_id FROM hm_booking");
    

    $test = $room->room_id;
    

    【讨论】:

    • 啊,所以通过测试以确保事情在做他们不应该做的事情,我摔倒了,落在了我的脸上。
    【解决方案2】:

    您使用的 SQL 语句 "SELECT room_id FROM hm_booking"get_var() 无论如何都将返回相同的值。 codex 提到:

    get_var 函数从数据库返回单个变量。

    假设hm_booking 表包含多行,那么您正在运行的SQL 语句将返回表中仅room_id 列的多行,而get_var() 函数将仅返回表中的第一行room_id 专栏。

    另外,考虑利用get_results()。您的第一个 SQL 查询可能已经存储了您需要的所有内容。 $rooms 变量是一个对象,包含来自您的 SELECT 查询的所有行和列:

    $query = "SELECT * FROM hm_booking ORDER BY room_id DESC";
    $rooms = $wpdb->get_results($query);    
    foreach ($rooms as $room) {
        echo 'Room ID:' . $room->room_id; // $room object represents a single row
    }
    

    【讨论】:

      猜你喜欢
      • 2021-08-22
      • 2019-03-22
      • 1970-01-01
      • 2019-07-21
      • 1970-01-01
      • 2012-04-10
      • 2020-01-08
      • 2013-01-13
      相关资源
      最近更新 更多