URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 2836
[ Назад ]

Исходное сообщение
"Тематический каталог: Формирование запросов к MsSQL из PHP. (win sql php)"

Отправлено auto_topic , 19-Ноя-03 16:36 
Обсуждение статьи тематического каталога: Формирование запросов к MsSQL из PHP. (win sql php)

Ссылка на текст статьи: https://www.opennet.ru/base/dev/mssql_php_slash.txt.html


Содержание

Сообщения в этом обсуждении
"Формирование запросов к MsSQL из PHP. (win sql php)"
Отправлено Yukko , 19-Ноя-03 16:36 
В результате боевых испытаний на рабочем сайте выявлены ошибки.
Не удваивает одиночную кавычку в начале и в конце слова/фразы, которое надо вставить в запрос.
Пример:
INSERT INTO dbo.USERS (UserName,) VALUES (''yukko')
либо
INSERT INTO dbo.USERS (UserName,) VALUES ('yukko'')

Рег будет переписываться.


"Формирование запросов к MsSQL из PHP. (win sql php)"
Отправлено Yukko , 13-Янв-04 11:59 
Вот собственно новая редакция рега:
<?
$some_string = "
     SET @idins = REPLACE(CONVERT(nvarchar(50), @myid), '-rrr'','dfj'njd' ) SET @userid = (SELECT ID FROM dbo.USERS WHERE (UserName = 'yuk'ko'))
";
$string =  preg_replace("/(?<=[\(=,]|<>)\s*('.*?')(?=\s*[,\\x29]|\s+where|\s*$|\s+and|\s+or)/sie","my_func('\\0')",$some_string);
     echo nl2br($string);
     function my_func($string)
     {  
$start = strpos($string,"'");
        $end = strrpos($string, "'");
        $begin = substr($string, 0, $start+1);
        $finish = substr($string, $end);
        $middle = substr($string, $start+1,$end-$start-1);
        $string = $begin.str_replace("'","''", $middle).$finish;
        return($string);
     }
?>

"Формирование запросов к MsSQL из PHP. (win sql php)"
Отправлено anonim , 22-Апр-11 18:56 
А чего не сделать проще ?
<?php  
   $query = "'yuk''ko''10'";
   echo $query;
   echo '
';
   $query = preg_replace("/'/","''",$query);
   echo $query;
    echo '
';
   $sql = "INSERT INTO dbo.USERS (UserName,) VALUES ('".$query."')";
   echo $sql;
?>