Problem dokładnie jak w temacie. Tworzę sobie klasę do obsługi zapytań MySQL, aczkolwiek nie działa mi LIKE. Za to AND działa znakomicie. Przeglądnąłem kilka stron i nie udało się rozwiązać problemu. Aczkolwiek błędu nie wyrzuca.
//budowanie zapytania
public function BuildSearchQuery($way='AND')
{
$query = 'SELECT * FROM `'.$this->tablename.'` WHERE ';
for($i=0;$i<$this->howcolumn;$i++)
{
$query .= '`'.$this->column[$i].'` = :'.$this->column[$i].' '.$way.' ';
}
if($way=='AND')
elseif($way=='LIKE')
$this->query = $query;
$this->way = $way;
}
//wykonanie zadania
public function Search($option='one')
{
$search = $db -> prepare("$this->query");
if($this->way=='AND')
{
for($i=0;$i<$this->howcolumn;$i++)
{
$search -> bindValue($this->column[$i],$this->searchvar[$i], PDO::PARAM_STR);
}
}
elseif($this->way=='LIKE')
{
for($i=0;$i<$this->howcolumn;$i++)
{
$search -> bindValue($this->column[$i],'%'.$this->searchvar[$i].'%', PDO::PARAM_STR);
}
}
$search -> execute();
if($option=='one')
{
$row = $search -> fetch(PDO::FETCH_ASSOC);
}
elseif($option=='multi')
{
$row = $search -> fetchAll(PDO::FETCH_ASSOC);
}
$this -> find = $row;
}
}
?>
A plik gdzie się odwołuję ma:
$request -> AddTablename('users');
$request -> AddColumn(array('usclass')); $request -> AddSearchVar(array('4')); $request -> BuildSearchQuery('LIKE');
$request -> Search('multi');
print_r zwraca tylko Array(). Przy tworzeniu bindValue, searchvar[$i], w tym przypadku 0, ma wartość 4. Więc względnie powinno być %4%, więc powinno wyszukać. A jednak zwraca pustą tablice...