Zuldek
1
Читаю документацию по экранированию символом и понятно и непонятно понятное…
Есть строчка, в которой присутствуют все символы которые необходимо экранировать
! " $ ' ( ) - / < @ \ ^ | ~
\! \" \$ \' \( \) \- \/ \< \@ \\\\ \^ \| \~
Верно ли экранировал символы, обратный слеш экранировал тримя слешами…
Все они, содержатся в строчке по которой делаем выборку. То есть это не опреатор, это просто строчка которая содержит символы.
Верно ли сделал, что на выходе все символы необходимо привести к данному формату?
$stm = $mn->query("SELECT * FROM `indexnews` WHERE MATCH('@title \":match\"/0.2')");
$stm->bindParam(':match', '\$manticore', PDO::PARAM_STR);
$results = $stm->execute();
Не выходит, даже ошибок не выводит…
Sergey
2
Вот полноценный пример:
➜ ~ 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
Zuldek
3
MATCH(:match)
Пример рабочий, так уже нет
MATCH('@title \":match\"/0.2')
Как верно прописывать?