我想要实现的是制作一个有字母表的页面,当您单击字母表中的字母时,您将获得数据库列中的值。
一个例子,如果你不明白。
数据库:
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/