Верно экранировать символы

Читаю документацию по экранированию символом и понятно и непонятно понятное…

Есть строчка, в которой присутствуют все символы которые необходимо экранировать

!    "    $    '    (    )    -    /    <    @    \    ^    |    ~
\!    \"    \$    \'    \(    \)    \-    \/    \<    \@    \\\\    \^    \|    \~

Верно ли экранировал символы, обратный слеш экранировал тримя слешами…

Все они, содержатся в строчке по которой делаем выборку. То есть это не опреатор, это просто строчка которая содержит символы.

Верно ли сделал, что на выходе все символы необходимо привести к данному формату?

$stm = $mn->query("SELECT * FROM `indexnews` WHERE MATCH('@title \":match\"/0.2')");
$stm->bindParam(':match', '\$manticore', PDO::PARAM_STR);
$results = $stm->execute();

Не выходит, даже ошибок не выводит…

Вот полноценный пример:

➜  ~ cat test_pdo_escaping.php
<?php
$ln_sph = new PDO('mysql:host=127.0.0.1;port=9306;');
$ln_sph->exec("DROP TABLE IF EXISTS index");
$ln_sph->exec("CREATE TABLE index (f text) charset_table='non_cjk, \$'");
$ln_sph->exec("insert into index(f) values('manticore'),('\$manticore')");

$statement = $ln_sph->prepare( "SELECT * FROM index WHERE MATCH(:match)");
$match = '\$manticore';
$statement->bindParam(':match',$match,PDO::PARAM_STR);
$statement->execute();
$results = $statement->fetchAll(PDO::FETCH_ASSOC); // Fetch all results as an associative array
var_dump($results);

➜  ~ php test_pdo_escaping.php
array(1) {
  [0]=>
  array(2) {
    ["id"]=>
    int(1516113395986727055)
    ["f"]=>
    string(10) "$manticore"
  }
}
1 Like

MATCH(:match)

Пример рабочий, так уже нет

MATCH('@title \":match\"/0.2')

Как верно прописывать?