php - PDO - 如果在 foreach 循环中总是返​​回 else

标签 php mysql sql pdo

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

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

数据库:

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");
                    }
                }
            }

最佳答案

快速修复错误。

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");
        }
}

关于php - PDO - 如果在 foreach 循环中总是返​​回 else,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19718363/

相关文章:

php - 我不小心删除了moodle(phpmyadmin)中的管理员用户,我无法访问网站管理中的任何内容

php - 如何密码保护整个网站但允许公众访问 1 个特定文件

php - 是否有适用于 PHP 的 IDE,您可以在其中设置断点并进入代码?

php - Eloquent 观察者没有触发

mysql - 从 MySQL 命令行执行的最大字符数是多少?

c# - LINQ 到 SQL : Reusing DataContext

仅从当前图表进行 MySQL Workbench 正向工程

php - 如何使用 PHP 通过 AJAX 从 MySQL 数据库更新数据?

php - 如何使用 date_add 将年、月、日、小时、分钟、秒添加到 mysql 日期?

mysql - 获取特定日期的两个不同列的唯一值