使用 PDO 传递 %like% 参数的正确方法?

Proper way to pass %like% param with PDO?

下面是查询,

public function getSearchResult($searchString){
       $stmt = $this->conn->prepare("SELECT t.* FROM company t WHERE t.company_name like ? ");
        $stmt->bind_param("i", "%".$searchString."%");
        $stmt->execute();
        $tasks = $stmt->get_result();
        $stmt->close();
        return $tasks;
    }

我得到的错误是

Fatal error: Cannot pass parameter 2 by reference in

我想我做错了 like 参数(因为它适用于 where = 条件)。我对苗条还很陌生,有什么帮助吗?

bind_param()

中使用之前必须先形成字符串
public function getSearchResult($searchString){
   $search = '%'. $searchString . '%';
   $stmt = $this->conn->prepare("SELECT t.* FROM company t WHERE t.company_name like ? ");
   $stmt->bind_param("s", $search);
   $stmt->execute();
   $tasks = $stmt->get_result();
   $stmt->close();
   return $tasks;
}

此外,看起来您传递的是字符串,而不是整数,请确保将类型设置为 "s"

您需要设置 i 变量的位置。

$stmt = $this->conn->prepare("SELECT t.* FROM company t WHERE t.company_name LIKE :i ");
$stmt->bind_param(":i", "%$searchString%", PDO::PARAM_STR);

Here is an example in php.net

<?php
public function getSearchResult($searchString){
       $stmt = $this->conn->prepare("SELECT t.* FROM company t WHERE t.company_name like ? ");
        $stmt->bind_param("s", "%$searchString%",PDO::PARAM_STR);
        $stmt->execute();
        $tasks = $stmt->get_result();
        $stmt->close();
        return $tasks;
    }

在 where 条件下搜索字符串,使其成为 s 并添加 PDO::PARAM_STR