2014-12-08 3 views
0

Я знаю, как бежать с помощью PDO с помощью prepare операторов в PHP.SQL раздельная/одиночная переменная escape с PDO

Однако я хотел бы избежать отдельной переменной, которая затем будет использоваться >> не сбежала < < другой структурой (wordpress).

$my_var = "something"; 
$my_var = PSEUDO_SINGLE_PDO_ESCAPE($my_var); 
use_elswhere('do_something', $my_var); 

Есть ли способ, как достичь этого, используя PDO?

Или как я должен дезинфицировать этот var?

EDIT: Я только что узнал, что WordPress имеет свою собственную функцию esc_sql() SQL побег, который возвращает                 Используется как $var = esc_sql($var);

«Сбежавшие значение подходит для использования в запросе SQL
+0

Как именно вы хотите убежать? Для чего? Какие персонажи? Существуют разные типы: '\ ', чтобы избежать цитаты в строке PHP. '% 20', чтобы избежать пробела для URL-адреса и т. Д. –

+0

@KIKOSoftware Я хочу, чтобы esacpe var был таким же, как и с PDO :: PARAM_STR' в методе' подготовка' PDO. –

+1

Смотрите: http://php.net/manual/en/pdo.quote.php –

ответ

1

Чтобы избежать подобных PDO, вы можете использовать:

$conn = new PDO('sqlite:/home/lynn/music.sql3'); 
$string = 'Nice'; 
echo "Unquoted string: $string\n"; 
echo "Quoted string: " . $conn->quote($string) . "\n"; 

См:

http://php.net/manual/en/pdo.quote.php

Таким образом, вы не должны думать о том, какие символы, чтобы избежать и как.

Обратите внимание, что тип базы данных, к которой вы подключаетесь, влияет на выход.

+0

и могу я задать еще один вопрос? что с «sqlite: /home/lynn/music.sql3» - это способ создания своего рода «виртуального» соединения PDO, поэтому можно использовать методы PDO? :) –

+1

В этом соединении нет ничего виртуального. Для работы PDO :: quote() необходимо подключение к существующей или новой базе данных. Каждый тип базы данных в PDO по-разному экранируется. Как я уже сказал, есть много способов избежать строк. –

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