想要按字母开头搜索结果,但显示包含该字母的所有内容


Want to search results by beginning letter but shows me everything that contains the letter

我通过阅读源代码和教程编写了我的第一个搜索过滤器,现在我有了自己的搜索过滤器。代码是有效的,但问题是我找不到让代码更精确的方法:就是我想如何使用它

这些是代码的重要部分(我删除了回波代码和连接部分,因为一切都可以):

<p><a href="?by=A">A</a> | <a href="?by=B">B</a> | <a href="?by=C">C</a> | <a href="?by=D">D</a> | <a href="?by=E">E</a> | <a href="?by=F">F</a> | <a href="?by=G">G</a> | <a href="?by=H">H</a> | <a href="?by=I">I</a> | <a href="?by=J">J</a> | <a href="?by=K">K</a> | <a href="?by=L">L</a> | <a href="?by=M">M</a> | <a href="?by=N">N</a> | <a href="?by=O">O</a> | <a href="?by=P">P</a> | <a href="?by=Q">Q</a> | <a href="?by=R">R</a> | <a href="?by=S">S</a> | <a href="?by=T">T</a> | <a href="?by=U">U</a> | <a href="?by=V">V</a> | <a href="?by=W">W</a> | <a href="?by=X">X</a> | <a href="?by=Y">Y</a> | <a href="?by=Z">Z</a></p>
<?php
if(isset($_GET['by'])){
    $letter=$_GET['by'];
    //-query the database table
    $sql="SELECT Name, Land FROM interpret WHERE Name LIKE '%" . $letter . "%'";
    //-run the query against the mysql query function
    $result=mysql_query($sql); 
    //ergebnisse zählen
    $numrows=mysql_num_rows($result);
    echo "<p>" .$numrows . " results found for " . $letter . "</p>"; 
    //loopy '(^_^)/
    while($row=mysql_fetch_array($result)){
        $Name =$row['Name'];
        $Land=$row['Land'];
    }
}
?>

我删除了连接到数据库的代码行和回显结果行,因为我怀疑它们在这里是否重要。

最好的最终结果是,当按下搜索栏中的按钮A时,所有结果都带有A(并且仅在开头带有A)。

删除了额外的%
$sql="SELECT Name, Land FROM interpret WHERE Name LIKE '" . $letter . "%'";

它允许$letter之前和之后的任何字符。现在它只匹配后面的任何字符。

%是一个通配符,所以您得到的是任何东西$letter所有东西。只需使用尾部的%,就可以得到$letter任何东西

$sql = "SELECT Name, Land FROM interpret WHERE Name LIKE '$letter%'";

如果你想得到像按下A这样的即时结果,就会弹出每个艺术家的名字和A,你必须使用AJAX。