我创建了一个将搜索范围的值发送到数据库的表单,但它似乎没有工作。
查询:
$alpha = $_POST['alpha'];
$sql = "SELECT * FROM tbl_members WHERE resultselect=? AND lname LIKE ?;";
$q = $conn->prepare($sql);
$q->execute(array($categoryid,"[".$alpha."]%"));
表格:
<form action="" method="post">
<button class="btn btn-link" value="abc" name="alpha">A-B-C</button>
<button class="btn btn-link" value="def" name="alpha">D-E-F</button>
</form>
答案 0 :(得分:0)
由于您使用的是Mysql,因此可以使用REGEXP
$alpha = $_POST['alpha'];
$sql = "SELECT * FROM tbl_members WHERE resultselect=? AND lname REGEXP ?;";
$q = $conn->prepare($sql);
$q->execute(array($categoryid,"^[".$alpha."]"));
使用LIKE
,您的查询应该是
SELECT * FROM tbl_members
WHERE resultselect=?
AND (lname LIKE 'a%'
OR lname LIKE 'b%'
OR lname LIKE 'c%')
因此,在这种情况下你的php代码可能是(假设你总是使用三个字符进行搜索)
$alpha = $_POST['alpha'];
$sql = "SELECT * FROM tbl_members
WHERE resultselect=? AND lname (lname LIKE ? OR lname LIKE ? OR lname LIKE ?);";
$q = $conn->prepare($sql);
$q->execute(array($categoryid, $alpha[0].'%', $alpha[1].'%', $alpha[2].'%'));
要按字母顺序排序结果集,请使用ORDER BY lname
。
以下是LIKE
和REGEXP