PHP从MySQL查询中减去|";性格


PHP subtract from MySQL query where "|" character

我有一个来自数据库的数组,其中包含链接,一些值正常为"index.php",但其他值看起来像"browse.php | search.php | calendar.php | tags.php?tags_mode=profile|search.php?show=match",但我只想使用第一个路径"browsephp",并包含从第一个"|"开始的所有内容。。我该怎么做?

这是我的代码:

$sql = "SELECT * FROM $tablename WHERE `Parent` = '0' AND Type LIKE 'top' ORDER BY `Order` ASC";
    $result = mysql_query($sql) or die ("Error: Query Failed! " .mysql_error());
    $output = "<ul>";
    while ($rs = mysql_fetch_array($result)) {
       $output .= "<li class='menu_top' id='".$rs['ID']."'><a href='".$rs['Link']."'>".$rs['Name']."</a></li>";
       $sql2 = "SELECT * FROM $tablename WHERE `Parent` = '".$rs['ID']."' ORDER BY `Order` ASC";
       $result2 = mysql_query($sql2) or die ("Error: Query Failed! " .mysql_error());
       if (mysql_num_rows($result2) != 0) {
          $output .= "<ul class='menu_sub' id='".$rs['ID']."'>";
          while ($rs2 = mysql_fetch_array($result2)){
             $output .= "<li><a href='".$rs2['Link']."'>".$rs2['Name']."</a></li>";
          }
          $output .= "</ul>";
       }
    }
    $output .="</ul>";
    echo $output;

$rs['Link']就是我想要的那个。。

我试着做减法,但我真的不能说我能做,因为我对php太陌生了。。谢谢你的建议。。

如果您只需要第一个元素,您可以使用极限爆炸:

$link=explode("|",$rs['Link'], 1);
echo $link [0];

$link=爆炸("|",$rs['link']);

$output .= "<li class='menu_top' id='".$rs['ID']."'><a href='".$link[0]."'>".$rs['Name']."</a></li>";

给你。

您可以使用纯sql:

$sql="SELECT*,IF(INSTR(Link,'|')>0,LEFT(Link,INSTR(Link,'|`)-1),Link)AS FormattedLink FROM$tablename WHERE Parent='0'AND Type LIKE'top'ORDER BY Order ASC";