Php mysql\u real\u escape\u字符串不适用
我有一个表格,它包含了很多关于相机细节的字段。这是我在Joomla上创建的自定义页面。首先,我得到数据库对象:Php mysql\u real\u escape\u字符串不适用,php,joomla,Php,Joomla,我有一个表格,它包含了很多关于相机细节的字段。这是我在Joomla上创建的自定义页面。首先,我得到数据库对象: $db = &JFactory::getDBO(); 处理表单中输入的摄像机名称并添加到数据库: $add_name = $_POST['camera_name']; $query_insert_camera = "INSERT INTO #__cameras (camera_name, ... , user_id) VALUES ('".mysql_real_escape_
$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\u real\u escape\u string
就可以了。我猜mysql\u real\u escape\u string
不喜欢我建立连接的方式……我想
有什么想法吗?您可能想了解JRequest::getVar
但是,它似乎不能在模块中使用:您可能需要查看JRequest::getVar
但是,它似乎不能在模块中使用:您的代码应该可以工作。我看到mysql\u real\u escape\u 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();
你的代码应该可以工作。我看到mysql\u real\u escape\u 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();
我刚刚遇到在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();
我刚刚遇到在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();
你收到警告了吗?文件说,如果找不到要使用的连接,它将发出警告。否则,我建议您将连接句柄放在函数调用中。
getDBO()
实际使用的是哪种连接?它是用mysql\u connect()
,还是用mysqli()
,或PDO创建的?正在调用什么APImysql\u real\u escape\u string()
仅在使用mysql\u connect()
建立连接时可用。为什么不使用Joomla的getVar?你收到警告了吗?文件说,如果找不到要使用的连接,它将发出警告。否则,我建议您将连接句柄放在函数调用中。getDBO()
实际使用的是哪种连接?它是用mysql\u connect()
,还是用mysqli()
,或PDO创建的?正在调用什么APImysql\u real\u escape\u string()
仅在使用mysql\u connect()
建立连接时可用。为什么不使用Joomla的getVar?不幸的是,它仍然输出一个空字符串。不幸的是,它仍然输出一个空字符串。谢谢。我怎么看它逃走了什么?如果我只是回显结果,我实际上看不到它是转义字符。我仍然在学习自己——当我挣扎于这一部分时,我试图通过输入一个“来打破它,看看它是否转义”。在使用JRequest::getVar之前,它坏了,之后就没有了。谢谢。我怎么看它逃走了什么?如果我只是回显结果,我实际上看不到它是转义字符。我仍然在学习自己——当我挣扎于这一部分时,我试图通过输入一个“来打破它,看看它是否转义”。在使用JRequest::getVar之前,它坏了,之后就没有了。