@lexstile

Как правильно составить запрос с оператором LIKE на sql?

Суть в том, что нужно использовать переменную :word.
Шаблон: :word% (начинается на :word, а дальше любое количество любых символов)
Пробовал так, не робит:
return $this->db->row('SELECT * FROM words WHERE word LIKE `:word%`', $params);

# запрос
	public function getSearchList($word) {
		$params = [
			'word' => $word,
		];
		return $this->db->row('SELECT * FROM words WHERE word = :word', $params);
	}
# framework db
	public function query($sql, $params = []) {
		$stmt = $this->db->prepare($sql);
		if (!empty($params)) {
			foreach ($params as $key => $val) {
				if (is_int($val)) {
					$type = PDO::PARAM_INT;
				} else {
					$type = PDO::PARAM_STR;
				}
				$stmt->bindValue(':'.$key, $val, $type);
			}
		}
		$stmt->execute();
		return $stmt;
	}

	public function row($sql, $params = []) {
		$result = $this->query($sql, $params);
		return $result->fetchAll(PDO::FETCH_ASSOC);
	}

	public function column($sql, $params = []) {
		$result = $this->query($sql, $params);
		return $result->fetchColumn();
	}
  • Вопрос задан
  • 104 просмотра
Решения вопроса 1
mad_maximus
@mad_maximus
$stmt = $this->prepare('SELECT * FROM words WHERE word LIKE :word');
$stmt->execute(['word' => $word . '%']);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы