2015-05-12 2 views
1

Вот ниже запрос,Правильный способ передать% как% param с 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

Я предполагаю, что я делаю, как неправильно из параметров (как это работает, где = условие). Я довольно новичок в тонкой, любой помощи?

+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

Смежные вопросы