首先,我不知道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是正确的,因为它在数据库中工作。请有人帮我看看,但似乎无法弄清楚我做错了什么。
提前致谢。
答案 0 :(得分:2)
从$rooms
获得get_results
后,您无需使用get_var
运行其他查询。
例如,要获取room_id
并将其放入$test
,而不是
$test= $wpdb->get_var("SELECT room_id FROM hm_booking");
DO
$test = $room->room_id;
答案 1 :(得分:1)
您正在使用"SELECT room_id FROM hm_booking"
以及get_var()
的SQL语句将返回相同的值,无论如何。 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
}