从循环内的表中获取数组

时间:2014-07-17 08:02:44

标签: php mysql sql arrays

我正在努力使用PHP从MySQL表中存储为LONGTEXT的数组中提取数据。

我正在创建一个通知脚本,该脚本来自两个单独的表格('事件'以及'预订')。在其他专栏中,预订' table的结构如此,LONGTEXT数组存储在' booking_meta'柱:

+------+------+------------+------------------------+
| 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";}} 

基本上,我想拉出' user_name'和' dbem_phone'来自预订' booking_meta'并在接下来的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>";
}

1 个答案:

答案 0 :(得分:1)

存储在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