Я использую PDO в веб-приложении, которое я создаю. Я всегда думал (я ошибаюсь на самом деле), что использование prepare
должно помочь с одинарными кавычками во вставленных переменных, но кажется, что я что-то пропустил. Я получаю ошибку, вставляющую такие значения, как L'Aquila, где во входных данных есть одна кавычка.pdo подготовить экранированные одинарные кавычки
Мой фактический код:
$sql = "INSERT INTO anagrafiche SET
id_ndg = '$protocol',
nick = '$nick',
nome = '$nome',
cognome = '$cognome',
ragsoc = '$ragsoc',
leg_rappr = '$leg_rappr',
cod_fisc = '$cod_fisc',
p_iva = '$p_iva',
cf_estero = '$cf_estero',
SAE = '$sae',
RAE = '$rae',
ATECO = '$ateco',
CRCODE = '$crcode',
indirizzo = '$indirizzo',
civico = '$civico',
cap = '$cap',
citta = '$citta',
prov = '$prov',
tel = '$tel',
cell = '$cellulare',
mail = '$mail',
note = '$note',
file_ci = '$file_ci',
file_cf = '$file_cf',
file_visura = '$file_visura',
cittadinanza = '$cittadinanza',
res_fiscale = '$res_fiscale',
is_curatore = '$is_curatore',
is_legale = '$is_legale',
is_tribunale = '$is_tribunale',
is_fornitore = '$is_fornitore' ";
try{
$s = $pdo->prepare($sql);
$s->execute();
}
catch (PDOException $e){
$error = 'Errori nel caricamento: '.$e->getMessage();
}
и когда я пытаюсь загрузить строку, содержащую одинарные кавычки, я получаю сообщение об ошибке, как это в то время, пытаясь загрузить строку плацу :
Errori nel caricamento: SQLSTATE [42000]: Ошибка синтаксиса или доступ нарушение: 1064 У вас есть ошибка в синтаксисе SQL; проверьте ручной , который соответствует вашей версии сервера MySQL для правильного синтаксиса использования рядом с «Арми», Сивико = «0», шапочкой = «83100», читты = «Авеллино», пров»в строке 15
Что мне не хватает? Я не думаю, что цитата из PDO может выполнить эту работу для меня, но, возможно, это я не понимаю.
Вы уже используете 'prepare()', но не привязываете фактическую переменную. Найдите 'bindParam()' или параметр 'execute()'. – Sirko
Подготовка - это только первый шаг. Связывание - это шаг 2. Вы должны подготовить запрос к заполнителям и привязать значения к этим заполнителям. Подготовка сама по себе не более безопасна, чем просто запускать запрос сама по себе и открыта для того же уровня sql-инъекции. –
ах, хорошо. Также следует установить bindParam. Попробует. Теперь я думаю о том, как готовятся работы. Благодаря! –