好的,我在需要显示的数据库中有信息,但无法正确调用它。
ID Name sid pos
-------------------------------
0 John 71829182 -30, 21, 0
1 John 71829182 -21, 21, 54
2 John 71829182 43, 21, -37
3 John 71829182 98, 21, 21
我需要显示所有具有相同sid行的行,所以当使用php回显时,它就像
John在71829182被发现在这些位置-30,21,0 | -21,21,54 | 43,21,-37 | 98,21,21
我无法理解,所以可以使用建议。
答案 0 :(得分:0)
您需要填写:YOUR_DB_SERVER,YOUR_DB_NAME,YOUR_USERNAME,YOUR_PASSWORD,YOUR_TABLE
$db = new PDO( 'mysql:host=YOUR_DB_SERVER;dbname=YOUR_DB_NAME;charset=UTF8', 'YOUR_USERNAME', 'YOUR_PASSWORD' );
$db->query( 'select * from YOUR_TABLE WHERE sid = YOUR_SID' );
$res = $db->fetchAll( PDO::FETCH_ASSOC );
print_r( $res );
此示例使用PDO,由于其强大的性质,主要是它能够避免SQL注入和支持许多数据库类型,因此大多数人会建议您使用它来与PHP中的DB进行交互。您可以使用许多其他功能来与DB进行交互,但它们是遗留的,并且不会存在更长时间。
在上面的例子中,fetchAll用于获取所有结果;你也可以对一行使用fetch(),对一行使用fetchColumn()。
PDO :: FETCH_ASSOC告诉PDO返回一个字段名称绑定到字段值的数组。还有其他选项,请参阅PHP手册了解详细信息。
答案 1 :(得分:0)
如果您对SQL解决方案感兴趣,可以使用GROUP_CONCAT
将行合并为一列:
SELECT name, sid, GROUP_CONCAT(pos SEPARATOR '|') positions
FROM yourtable
GROUP BY name, sid
编辑,鉴于您的意见,这应该有效:
SELECT playername, steamID, position, lastlogin,
GROUP_CONCAT(position SEPARATOR '|') positions
FROM player
GROUP BY playername, steamID ORDER by playername
请注意,在您的PHP代码中,您无法再致电row['position']
,而应致电row['positions']
,因为列名已更改。