[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: не экранируются кавычки
Страницы: 1, 2, 3
TranceIT
Цитата (php.net)
Вызов PDO::prepare() и PDOStatement::execute() для запросов, которые будут запускаться многократно с различными параметрами, повышает производительность приложения, так как позволяет драйверу кэшировать на клиенте и/или сервере план выполнения запроса и метаданные, а также помогает избежать SQL иньекций, так как нет необходимости экранировать передаваемые параметры.



Цитата (user_name @ 9.04.2015 - 08:43)
Я их и так использую.

Зачем экранировать тогда?

_____________
Безвозмездно помогаю только тем, кто сам пытается что-то сделать.

Остальным за WMR
Даже если там 10 строк кода!
Даже если мне это ничего не стоит!
Даже если вы нуб!

user posted image
user_name
Insert сохраняет заэкранированные кавычки и знак \ сохраняется. Мне просто insert не нужен. А при update не работает.
Цитата
Зачем экранировать тогда?

Потому что у меня выдает ошибку при обновлении любого столбца этой строки где не экранированные кавычки. Если вручную заэкранировать то все без ошибок. Бред какой то.
Игорь_Vasinsky
код в студию.

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
user_name
Игорь_Vasinsky У меня просто большой класс для запросов к БД. Наврятли кто то захочет разбираться в нем.
Игорь_Vasinsky
не нужно всё. нужен кусок где обрабатываются данные и отсылается запрос.

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
user_name
Игорь_Vasinsky
public function update(){
$arrayAllFields = array_keys($this->fieldsTable());
$arrayForSet = array();
foreach($arrayAllFields as $field){
if(!empty($this->$field)){
if(strtoupper($field) != 'ID'){
$arrayForSet[] = $field . ' = "' . $this->$field . '"';
}else{
$whereID = $this->$field;
}
}
}

if(!isset($arrayForSet) OR empty($arrayForSet)){
echo "Array data table `$this->table` empty!";
exit;
}
if(!isset($whereID) OR empty($whereID)){
echo "ID table `$this->table` not found!";
exit;
}

$strForSet = implode(', ', $arrayForSet);

try {
$db = $this->db;
$stmt = $db->prepare("UPDATE $this->table SET $strForSet WHERE `id` = $whereID");
$result = $stmt->execute();
}catch(PDOException $e){
echo 'Error : '.$e->getMessage();
echo '<br/>Error sql : ' . "'UPDATE $this->table SET $strForSet WHERE `id` = $whereID'";
exit();
}
return $result;
}

fieldsTable - массив с названиями полей таблицы
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.