mysql_real_escape_string没有应用

时间:2012-03-26 01:50:10

标签: php joomla

我有一个表单,其中包含有关相机详细信息的许多字段。这是我在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不喜欢我建立连接的方式......我想。

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

答案 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();
相关问题