【问题标题】:PHP / PDO search with pattern matching带有模式匹配的 PHP / PDO 搜索
【发布时间】:2014-05-21 14:34:58
【问题描述】:

当我在数据库中搜索用户时,我会这样做:

$result = $dbh->query("SELECT user FROM table_user WHERE user = '".$user."' ");
    $result->execute();
    while ($user = $result->fetch(PDO::FETCH_ASSOC)) {
        $array[] = $user['user'];
    }

但我首先得到一个结果,当

user

和

$user

完全一样。

但是我已经需要一个结果,当“$user”是“user”的一部分时,有人知道如何进行这样的模式匹配吗?

你好!!

【问题讨论】:

  • 你听说过 SQL 运算符“LIKE”吗?
  • 你的问题我不清楚。另外,当使用 PDO:query 时不需要执行,因为:PDO::query — Executes an SQL statement, returning a result set as a PDOStatement object
  • 你用pdo做什么? '".$user."' 是非常糟糕的做法......
  • 使用占位符代替或者你的意思是 vp_arth ?
  • “这是一美元。给我一美元。嘿!为什么是同一美元!?”

标签: php search pdo match


【解决方案1】:

您正在搜索LIKE 语句。进一步注意,当您以这种方式插入 $user 时,您很容易受到 SQL 注入的攻击。您应该使用准备好的语句-

使用这个:

$stmt = $dbh->prepare("SELECT user FROM table_user WHERE user LIKE :search");
$stmt->execute(array('user' => "%$user%"));

while($user = $stmt->fetch()) {
    var_dump($user);
}

【讨论】:

    猜你喜欢
    • 2011-03-13
    • 2017-09-26
    • 2015-07-07
    • 2019-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-12
    相关资源
    最近更新 更多