PDO - 如果在foreach循环总是返回其他
问题描述:
我想要实现的是使页面有一个字母表,当你点击字母表中的一个字母时,你会得到值在那列数据库。PDO - 如果在foreach循环总是返回其他
一个例子,如果你不明白它。
数据库:
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");
}
}
}
答
Quick bugfix。
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");
}
}
阅读更多关于'prepare'。 – sectus
问题是** ** **看到这个[答案](http://stackoverflow.com/questions/11117134/implement-like-query-in-pdo/11117213#11117213) –