имею файл подключения к БД
dbconnect.php:
Код: Выделить всё
header('Content-Type: text/html; charset=utf-8');
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : '../';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
include($phpbb_root_path . 'includes/mcp/mcp_main.' . $phpEx);
include($phpbb_root_path . 'includes/functions_admin.' . $phpEx);
mysql_set_charset("utf8",$db);
// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup('mcp');
myfunctions.php :
Код: Выделить всё
function clear_string ($cl_str)
{$cl_str=$db->sql_escape($cl_str);$cl_str=$db->sql_escape($cl_str);($cl_str); // очищает от тегов
$cl_str = strip_tags(html_entity_decode($cl_str)); // очищает от тегов
//$cl_str=mysql_real_escape_string($cl_str);
//$cl_str= str_replace("\'", "''", addslashes($cl_str)); // экранирует спецсимволы
//$cl_str = request_var('$cl_str', 0);
//$cl_str=$db->sql_escape(utf8_clean_string($cl_str));
$cl_str=trim($cl_str); // удаляет пробелы
$cl_str=$db->sql_escape($cl_str);
return $cl_str;
}
Код: Выделить всё
include("include/dbconnect.php");
include("include/myfunctions.php");
$cat= clear_string ($_GET["cat"]);
$query = 'SELECT * FROM items WHERE catalog_id = '. $cat.' ;
Если функцию ESCAPE прописать прямо в запросе, то работает, получаю экранирование слешами:
Код: Выделить всё
$query = 'SELECT * FROM items WHERE catalog_id = '. $db->sql_escape($cat);
Теперь вопросы:
1. можно ли и как правильно прописать ESCAPE и TRIM в отдельной функции ?
2. как сделать, чтобы при правильном экранировании и удалении пробелов запрос исполнялся, а не получалась ошибка
Сейчас он получается такой и обрабатываться не хочет :
SELECT * FROM sp_items WHERE catalog_id = 17658\\\' \\\'\\\'
заранее благодарю за ваше внимание к моему вопросу. спасибо