我正在为我的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 BY
和GROUP_CONCAT()
函数,则结果已经是数组形式。如果您必须使用
GROUP_CONCAT
,则可以使用。。。// Convert a long string (separated by commas) into an array
$attachments = explode(',', $attachments);