2015-05-12 13 views
1

这里是下面的查询,我得到正确的方法来传递%param与%一样吗?

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

我想我做的不正确之类参数(因为它适用于其中=条件)。我很苗条,还有什么新的帮助?

+1

你可以通过它在执行像一个数组。 – chris85

回答

3

你必须形成串,然后才能在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"

2

你需要设置你的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

2
<?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; 
    } 

搜索字符串在条件所以这将是s并添加PDO::PARAM_STR

相关问题