[英]Fetch array from tables within loop
我正在努力使用PHP从以LONGTEXT形式存储在MySQL表中的数组中提取数据。
我正在创建一个从两个单独的表(“事件”和“预订”)中提取的通知脚本。 在其他列中,“ bookings”表的结构类似,在“ booking_meta”列中存储了一个LONGTEXT数组:
+------+------+------------+------------------------+
| booking_id | event_id | booking_meta |
+------+------+------------+------------------------+
| 1 | 12 | (example array below) |
| 2 | 12 | |
| 3 | 12 | |
| 4 | 12 | |
| 5 | 13 | |
| 6 | 13 | |
| 7 | 13 | |
+------+------+------------+------------------------+
数组示例:
a:1:{s:12:"registration";a:5:{s:10:"user_email";s:14:"test@email.com";s:9:"user_name";s:9:"Full Name";s:10:"first_name";s:4:"Full";s:9:"last_name";s:4:"Name";s:10:"dbem_phone";s:8:"12345678";}}
本质上,我想从“ booking_meta”中的数组中提取“ user_name”和“ dbem_phone”,并在接下来的15分钟内在所有预订的列表中回显它。 以下查询中的所有内容均有效,但我不知道如何在已经发生的情况下解析此数组:
$bookingresult = mysqli_query($con,"SELECT * FROM events, bookings
WHERE event_start_date='$date' AND event_start_time BETWEEN '$currenttime' and '$currenttime15' AND events.event_id = bookings.event_id");
echo "Bookings for events in the next 15 minutes: <br>";
while($row = mysqli_fetch_array($bookingresult)) {
echo $row['booking_id'] . " " . $row['event_name'];
$phonedata = mysqli_fetch_array($row['booking_meta']);
echo $phonedata['phone'];
echo "<br>";
}
存储在booking_meta
字段中的数据看起来像一个序列化的PHP数组。 传递一个数组以进行serialize
以生成booking_meta
的值。
要将其转换回数组,请将字符串传递给unserialize
。
简而言之,正如我在评论中所说:
$phonedata = mysqli_fetch_array($row['booking_meta']);
//should be
$phonedata = unserialize($row['booking_meta']);
echo $phonedata['registration']['dbem_phone'];
尝试var_dump($phonedata);
了解数据的实际结构(这是一个2D数组)。
PS:您将$row
用作关联数组,这很好。 但是,您正在将行作为关联数组和数字索引数组来获取 。 这是mysqli_fethc_array
的默认行为,请考虑切换到mysqli_fetch_assoc
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.