我很难找出一个优雅的解决方案来根据分隔字符串对 mysql 查询的结果进行排序。我将在下面更详细地解释
我正在创建一个联系人数据库,个人用户可以在其中从列表中添加/删除人员。当用户添加新联系人时,我将添加的联系人 ID 附加到分隔字符串,并将该数据存储在与该用户关联的数据库列中(命名为联系人):
$userID = ?? //YOUR ID
$contactID = ?? //WHATEVER THE ADDED USER ID IS
$confirm = 0 //has the user been confirmed
$sql = "SELECT contacts FROM user WHERE id = '$userID'";
$query = mysql_query($sql);
$row = mysql_fetch_array($query);
$contact = $row['contacts'];
$contact .= '|'.$contactID.':'.$confirm;
$update = mysql_query("UPDATE user SET contacts = '$contact' WHERE id = '$userID'");
//contact column data might be: |10:0|18:0|36:0|5:0
当用户搜索他们的联系人时,我从联系人列中获取数据,分解/拆分字符串并返回各个用户的姓名:
$userID = ?? //YOUR ID
$sql = "SELECT contacts FROM user WHERE id = '$userID'";
$query = mysql_query($sql);
$row = mysql_fetch_array($query);
$contacts = explode("|", $row['contacts']);
foreach($contacts as $item)
{
list($contactID,$confirm) = split(":", $item);
$sql = "SELECT name FROM ".user." WHERE id = '$contactID'";
$query = mysql_query($sql);
$row = mysql_fetch_array($query);
echo($row['name'].'<BR>');
}
这确实会返回所有名称,但它会按分隔字符串的顺序返回它们。我似乎找不到一种按名称按字母顺序排序的优雅方式。
我不应该将联系人列表存储在分隔字符串中吗?你会如何解决这个问题?