mysql_real_escape_string не применяется - PullRequest
1 голос
/ 26 марта 2012

У меня есть форма, которая принимает несколько полей о деталях камеры.Это пользовательская страница, которую я создаю на Joomla.Сначала я получаю объект базы данных:

$db = &JFactory::getDBO();

Обрабатываю имя камеры, введенное в форму, и добавляю в БД:

$add_name = $_POST['camera_name'];
$query_insert_camera = "INSERT INTO #__cameras (camera_name, ... , user_id) VALUES ('".mysql_real_escape_string($add_name)."', ... ,'".$user->id."')";
$db->setQuery($query_insert_camera);
$db->query();

Я просто получаю пустую строку для имени камеры.Если я достану mysql_real_escape_string, то все работает нормально.Я предполагаю, что mysql_real_escape_string не нравится, как я устанавливаю связь ... Я думаю.

Есть идеи?

Ответы [ 3 ]

1 голос
/ 21 октября 2012

Я только что столкнулся с проблемой использования mysql (i) _real_escape_string () в Joomla и обнаружил, что мне нужно передать соединение db в качестве первого параметра:

$db = JFactory::getDbo();
$myVar = JRequest::getVar('myVarName');
$mysqlSafeVar = msqli_real_escape_string($db->getConnection(), $myVar);
$sql = 'INSERT INTO #__mytable (' .$db->nameQuote('myField'). ') VALUES (' . $db->quote($mysqlSafeVar) . ')';
$success = $db->execute();
1 голос
/ 26 марта 2012

Вы можете посмотреть в JRequest :: getVar http://docs.joomla.org/Retrieving_and_Filtering_GET_and_POST_requests_with_JRequest::getVar

Однако не представляется возможным использовать его в модуле: http://groups.google.com/group/joomla-dev-general/browse_thread/thread/15ebde03b858c9e8

0 голосов
/ 26 марта 2012

Ваш код должен работать. Я вижу, что mysql_real_escape_string () используется почти таким же образом здесь .

Разница между этим кодом и тем, что у вас есть, незначительна, но, возможно, вместо этого попробуйте что-то вроде этого:

$db = &JFactory::getDBO();

// Escape the POST var as you grab it
$add_name = mysql_real_escape_string(JRequest::getVar('camera_name', '', 'post', 'string'));

$query_insert_camera = "INSERT INTO #__cameras (camera_name) VALUES ('" . $add_name . "')";
$db->setQuery($query_insert_camera);
$db->query();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...