php - 使用 PHP PDO 语句的 SQL 通配符字符列表

标签 php mysql pdo wildcard

我创建了一个表单,它将搜索范围的值发送到数据库,但它似乎不起作用。

查询:

$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 LIKEREGEXP 演示

关于php - 使用 PHP PDO 语句的 SQL 通配符字符列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16849515/

相关文章:

jquery - SQL数据库: Update Table for

php - 如何在foreach循环中显示来自PDO的数据

php - PDO 和 MySql 只输出一行一次

PHP PDO MySQL count() 预处理语句

php - $_SESSION ['userid' ] 在一个函数中起作用,而不是在下一个函数中起作用

php - 如何使用 bind_param 将图像插入 MySQL 表

mysql - Sql从具有不同列的两个表中选择数据

php - 从mysql数据库获取图像数据时如何getimagesize()

php - 违反完整性约束 : 1048 Column 'name' cannot be null

php - 意外标记附近的 Cron 语法错误