2013-04-25 4 views
-1
$q = "INSERT INTO articles VALUES(mysql_real_escape_string($_GET["article"])) 
$req = $bdd->prepare($q); 
$req ->execute(); 

я работал на другом сервере, где mysql_real_escape_string() до сих пор не устарели, и теперь я движущуюся сайт на другой сервер MySQL, который, по-видимому не принимает эту функцию больше. И, довольно ясно, мне нужно использовать некоторые PDO.INSERT INTO: mysql_real_escape_string альтернативный

И что же такое PDO-эквивалент для mysql_real_escape_string()? Я пытаюсь что-то вроде этого

$idc = new PDO(...); 
$q = "INSERT INTO articles VALUES($idc->quote(($_GET["article"]))); 
$req = $bdd->prepare($q); 
$req ->execute(); 

Я использую подготовленные заявления, но я подозреваю, что мой PDO :: цитата неправильно где-то.

Но это не дает тот же результат ... Спасибо.

+0

Если вы используете PDO, вы должны использовать подготовленные операторы. BTW, ваш исходный оператор не работал бы, так как функции не оценивались внутри строк - вам нужно использовать конкатенацию. – Barmar

+0

Какой результат вы получаете от 'quote'? Также вы помещаете 'mysql_real_escape_string' или' quote' непосредственно в запрос? Потому что это не сработает ... –

+0

если вы что-то подозреваете - почему бы не попробовать страницу руководства? –

ответ

1

PDO::quote является эквивалентом mysql_real_escape_string. Если есть какая-то причине вы не можете использовать подготовленное заявление, вы можете использовать его как это:

$q = "INSERT INTO articles VALUES (" . $idc->quote($_GET["article"]) . ")"; 

Существенным отличием является то, что она включает в себя окружающие кавычки строки, в то время как mysql_real_escape_string нет (так что вы бы должны помещать кавычки в строку INSERT).

+0

Спасибо вам большое! – afiqjohari