LINUX.ORG.RU

PHP, PDO. Чем в PDO заменить sqlite_escape_string() ?


0

1

Здравствуйте!

В PHP есть один странный момент, который я все никак не могу понять.

В PDO почему-то не предусмотрено экранирование опасных символов. До некоторого момента пользовался sqlite_escape_string() при работе с SQLite через PDO, но начиная с PHP 5.4.0 эту функцию выпилили.

Вопрос. Чем ее заменять функцию sqlite_escape_string()?

★★★★★

вы до сих пор составляете запрос конкатенацией вместо параметров? вроде уже давно 21-век на дворе.

maloi ★★★★★
()
Ответ на: комментарий от maloi

Я адаптирую старый БД драйвер, который только полностью переписать на объектный стиль можно, а это слишком трудозатратно.

Требуется всего только исправить функцию:

/**         
* Escape String         
*         
* @access      public         
* @param       string         
* @return      string         
*/        
function escape_str($str)        
{
 return sqlite_escape_string($str);        
}

Сейчас просто сделал возврат необработанной строки, работает, но оставлять в таком виде нехорошо.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Xintrea

Биндить - это правильно, а функция мессагой выше может использоваться только в говнокоде. Поддерживать кучу говнокода трудозатратнее, чем переписать драйвер на нормальный стиль.

maloi ★★★★★
()
Ответ на: комментарий от maloi

Биндить - это правильно, а функция мессагой выше может использоваться только в говнокоде. Поддерживать кучу говнокода трудозатратнее, чем переписать драйвер на нормальный стиль.

Этот опенсорчный говнокод уже как пять лет прекрасно отработал без всякого обслуживания, и еще отработает при нулевых трудозатратах.

Но если вы не знаете ответа на вопрос, можно было не отвечать.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от maloi

Поддерживать кучу говнокода трудозатратнее, чем переписать драйвер на нормальный стиль.

Такое надо снабжать двумя лопатами смайликов, иначе в дурочки запишут.

arturpub ★★
()
Ответ на: комментарий от Xintrea

Можно вопрос? Если поискать в исходниках - сколько случаев использования этой функции насчитаете?

svu ★★★★★
()

делайте через prepare - остальное от лукавого

swwwfactory ★★
()
Ответ на: комментарий от svu

Можно вопрос? Если поискать в исходниках - сколько случаев использования этой функции насчитаете?

Честно говоря, не могу сказать.

Это драйвер БД один из набора MySql, MSSql, Oci8, Odbc, Postgre, SQLite2 и вот еще он - SQlite3 на базе PDO.

В проекте динамически подключется код нужного драйвера, он переопределяет методы базового драйвера (верхним кодом вроде используются не все методы). Ну и подключение происходит вообще путем динамической генерации кода, типа такого:

if ( ! isset($active_record) OR $active_record == TRUE)
        {
                require_once(BASEPATH.'database/DB_active_rec'.EXT);

                if ( ! class_exists('CI_DB'))
                {
                        eval('class CI_DB extends CI_DB_active_record { }');
                }
        }
        else
        {
                if ( ! class_exists('CI_DB'))
                {
                        eval('class CI_DB extends CI_DB_driver { }');
                }
        }

require_once(BASEPATH.'database/drivers/'.$params['dbdriver'].'/'.$params['dbdriver'].'_driver'.EXT);
Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Xintrea

Говонокод юзаем, говнокод пишем, мануалы не читаем. Так победим.

If you are using this function to build SQL statements, you are strongly recommended to use PDO::prepare() to prepare SQL

Fafhrd
()
Ответ на: комментарий от Xintrea

этот твой вопрос еще раз говорит о том, что мануалы ты не читаешь. не верь цитатам, вырванным из контекста, никогда.

ходить по ссылкам некогда же, да?

Fafhrd
()
Ответ на: комментарий от Fafhrd

Слышь чо, таварищь, прекращай гаварить загадками, уже достало. Каждый мля чо-та видит в мануалах такого что другие не видят. Мануал читал, ничего интересного не нашел. Либо ты пишешь прямо, либо звиздуешь в пень.

Xintrea ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.