2011-01-21 2 views
0
$url = "What's up with "You doing this""; 
$q = sprintf ("update user set url='%s'",$url); 
pg_query ($db_conn, $q) 

Я хочу вставить все в базу данных точно так, как хочет пользователь. Я не хочу ничего скрывать. Вышеизложенное не получилось бы из-за цитат. Я знаю, что одиночные кавычки должны идти вокруг строки postgresql (url = '% s'). Поскольку в моей строке url есть двойные кавычки, запрос не будет обновляться из-за этого. Я уверен, что смогу выполнить замену строки для всех двойных кавычек и сделать их одинарными кавычками, но что, если пользователь действительно хочет двойные кавычки. И я не могу использовать замену строки, чтобы поместить обратную косую черту, потому что, согласно документам postgresql, косая черта будет устаревшей (http://www.postgresql.org/docs/8.1/interactive/sql-syntax.html) плюс, что идет вразрез с вставкой только то, что вводил пользователь.postgresql котировки проблема

Что люди предлагают мне делать?

ответ

1

Использование параметризованных запросов:

pg_query_params 
     (
     $db_conn, 
     "UPDATE user SET url = $1", 
     array('What's up with "You doing this"') 
     ); 
+0

Мне все еще нравится идея использования sprintf. Это все еще возможно? – keith

+0

@keith: да, просто измените одинарные кавычки в двойные кавычки во входных строках. В вашем примере у вас их нет, поэтому вы можете просто оставить строку как есть. Не знаю, почему вы не хотите использовать параметры, но это зависит от вас, конечно. – Quassnoi

+0

Вам нужно избегать одной цитаты в 'what's' ->' what''s' – Toto

0

избежать ваши двойные кавычки в тексте, как этот

$ URL = "Что \ 's с \ "Вы делаете это \"";

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