繁体   English   中英

从循环内的表中获取数组

[英]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.

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