1

我想要实现的是制作一个有字母表的页面,当您单击字母表中的一个字母时,您将获得数据库中列中的值。

一个例子,如果你不明白。

数据库:

John
Jason
Jos
Jan
Marco
Bott

所以我点击字母表中的一个字母:

<a href="?tag=J">J</a>

这应该给我所有以 J 开头的用户。

这是我的代码不起作用(它也总是返回)。

            if(isset($_GET['tag'])){
                $tag = $_GET['tag'];
                $check = range('A', 'Z');
                foreach($check as $row){
                    if($tag == $row){
                        $query = $pdo->prepare("SELECT names FROM users WHERE UPPER(names) LIKE '{$row}%'");
                    } else {
                        $query = $pdo->prepare("SELECT names FROM users");
                    }
                }
            }
4

1 回答 1

1

快速修正错误。

if(isset($_GET['tag'])){
    $tag = $_GET['tag'];
    $check = range('A', 'Z');
    // default query
    $query = $pdo->prepare("SELECT names FROM users");
    foreach($check as $row){
        if($tag == $row){
            $query = $pdo->prepare("SELECT names FROM users WHERE UPPER(names) LIKE '{$row}%'");
            // do not check other
            break; 
        } 
    }
}

但这是错误的方式。你不需要foreach

if(isset($_GET['tag'])){
    $tag = $_GET['tag'];
    if (preg_match('/^[A-Z]/', $tag, $matches)){
            $query = $pdo->prepare("SELECT names FROM users WHERE UPPER(names) LIKE '{$matches[0]}%'");
        } else {
            $query = $pdo->prepare("SELECT names FROM users");
        }
}
于 2013-10-31T23:35:44.460 回答