我正在为我的php项目编写一个小的票务系统,我想得到一个特定消息id的所有附件。
这是我目前的疑问:

SELECT a.id,
       a.from, a.to, a.date,
       a.title,
       a.content,
       GROUP_CONCAT(tma.filename, tma.filepath)
FROM bestia_messages AS a
LEFT JOIN bestia_messages_attachments as tma
       ON a.id = tma.messageid
GROUP BY a.id
ORDER BY a.date DESC

我的回信是这样的:
object(stdClass)#375 (8) {
    ["id"]       => string(3) "725"
    ["ticketid"] => string(11) "123456
    ["from"]     => string(16) "test@example.com"
    ["to"]=> string(27) "test2@example.com"
    ["date"]=> string(19) "2015-08-03 14:47:27"
    ["title"]=> string(17) "Ticket mit Anhang"
    ["content"]=> string(775) "Ticket mit Anhang…"
    ["GROUP_CONCAT(tma.filename, tma.filepath)"] => string(212) "Test.pngasdaadasasgsdafasdasdasgasfasf,Bildschirmfoto 2015-07-14 um 17.10.43.png52d0833774bc94698e4101c021deebecf5724a4c65d1efc477948180c072c61778b6c0174040cdef6d94d8669251f0a6646c5caf6e1966b9796625979973b2a4.png" }

到目前为止,还不错
`Test.png` is attached to file path `asdaadasasgsdafasdasdasgasfasf`
 and `Bildschirmfoto 2015-07-14 um 17.10.43.png` is attached to file path `52d0833774bc94698e4101c021deebecf5724a4c65d1efc477948180c072c61778b6c0174040cdef6d94d8669251f0a6646c5caf6e1966b9796625979973b2a4.png`.

现在我想在此基础上创建一个数组,这样我就可以像这样在PHP中工作:
foreach($mesage->attachment as $attachment)
{
    echo 'Filename: '.$attachment->filename;
    echo 'Filepath: '.$attachment->filepath;
}

我该怎么解决?

最佳答案

如果您使用PHP MySQL函数,它们将为您返回一个数组。
这是W3schools的一个例子(尽管我不喜欢向他们推荐任何东西)。

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

// Run SQL query
$sql = "SELECT id, firstname, lastname FROM MyGuests";
$result = $conn->query($sql);

// output data of each row
while($row = $result->fetch_assoc()) {
    echo "ID: " . $row["id"];
    echo "Name: " . $row["firstname"] . $row["lastname"];
}
$conn->close();

见:http://www.w3schools.com/php/php_mysql_select.asp
如果避免使用GROUP BYGROUP_CONCAT()函数,则结果已经是数组形式。
如果您必须使用GROUP_CONCAT,则可以使用。。。
// Convert a long string (separated by commas) into an array
$attachments = explode(',', $attachments);

07-24 09:38
查看更多