我有一个表单,其中包含有关相机详细信息的许多字段。这是我在Joomla上创建的自定义页面。首先我得到数据库对象:
$db = &JFactory::getDBO();
处理在表单中输入的摄像机名称并添加到DB:
$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
不喜欢我建立连接的方式......我想。
有什么想法吗?
答案 0 :(得分:1)
您可能需要查看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
答案 1 :(得分:1)
我刚刚遇到了在Joomla中使用mysql(i)_real_escape_string()的问题,发现我需要传入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();
答案 2 :(得分:-1)
您的代码应该有效。我看到mysql_real_escape_string()使用几乎的方式与here相同。
该代码与您拥有的内容之间的区别很小,但也许可以尝试这样的代码:
$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();