我创建了一个表单,它将搜索范围的值发送到数据库,但它似乎不起作用。
查询:
$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>
最佳答案
由于您使用的是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
.
这里是SQLFiddle LIKE
和 REGEXP
演示
关于php - 使用 PHP PDO 语句的 SQL 通配符字符列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16849515/