我使用Joomla 2.5,我正在尝试将数据插入到我的数据库中
这是我的代码
$db =& JFactory::getDBO();
$query =
"INSERT INTO '#__restaurantes' ('nombre', 'direccion', 'localizacion', 'cod_postal', 'telefono', 'web')
VALUES ( JRequest::getCmd('restaurante'), JRequest::getCmd('direccion'), JRequest::getCmd('localizacion'), JRequest::getCmd('postal'), JRequest::getCmd('telefonoEmpresa'), JRequest::getCmd('web') )";
$db->setQuery( $query );
$db->query();
一切都很好,我没有任何错误,但它没有插入任何内容。
有什么想法吗?感谢
答案 0 :(得分:3)
当试图弄清楚你的Joomla出了什么问题!代码首先要做的是将Site->Global Configuration->Server
屏幕中的错误报告级别设置为Maximum
(或Development
如果您没有安装任何扩展程序,则会导致Joomla!崩溃{{1} }}
这不仅会报告更多错误及其详细信息,还会提供一个“调试控制台”,其中有一个名为“数据库查询”的部分,它将准确显示所有SQL查询的内容。
现在,根据您提供的代码:
Maximum
将无法按照您的结构方式运行,因为每个$query
只会被视为语法错误。JRequest()
中使用它们,或者使用连接来构建查询来修复初始方法。在PHP wrap a string in " double quotes中,PHP处理字符串并替换任何变量或转义序列。
$query
要使用$restaurante = JRequest::getCmd('restaurante');
$direccion = JRequest::getCmd('direccion');
$localizacion = JRequest::getCmd('localizacion');
$postal = JRequest::getCmd('postal');
$telefonoEmpresa = JRequest::getCmd('telefonoEmpresa');
$telefonoEmpresa = JRequest::getCmd('telefonoEmpresa');
$query = "INSERT INTO '#__restaurantes' ('nombre', 'direccion', 'localizacion', 'cod_postal', 'telefono', 'web') VALUES ( $restaurante, $direccion, $localizacion, $postal, $telefonoEmpresa, $web )";
$db->setQuery( $query );
来电,您需要使用'。' (concatenation operator)构建字符串并进行调用。
JRequest()
$query = "INSERT INTO '#__restaurantes' ('nombre', 'direccion', 'localizacion', 'cod_postal', 'telefono', 'web') VALUES ("
. JRequest::getCmd('restaurante') . ", "
. JRequest::getCmd('direccion') . ", "
. JRequest::getCmd('localizacion') . ", "
. JRequest::getCmd('postal') . ", "
. JRequest::getCmd('telefonoEmpresa') . ", "
. JRequest::getCmd('web'). " )";
! 1.5以及2.5。您应该使用JInput()
- 阅读该链接以获取更多信息。JRequest
过滤所有值,只允许集合[A-Za-z0-9。-_]中的字符,因此将删除任何非ascii值。答案 1 :(得分:2)
您需要在您的值周围加上引号:
$restaurante = JRequest::getCmd('restaurante');
$direccion = JRequest::getCmd('direccion');
$localizacion = JRequest::getCmd('localizacion');
$postal = JRequest::getCmd('postal');
$telefonoEmpresa = JRequest::getCmd('telefonoEmpresa');
$telefonoEmpresa = JRequest::getCmd('telefonoEmpresa');
$query = "INSERT INTO '#__restaurantes' ('nombre', 'direccion', 'localizacion', 'cod_postal', 'telefono', 'web') VALUES ( '$restaurante', '$direccion', '$localizacion', '$postal', '$telefonoEmpresa', '$web' )";
$db->setQuery( $query );
此外,您应该在查询后添加此代码以捕获任何错误:
if ($db->getErrorNum()) {
JError::raiseError("Error", $db->stderr());
}
答案 2 :(得分:1)
这也应该有效:
$data =new stdClass();
$data->id = null;
$data->field1 = 'val1';
$data->field2 = 'val2';
$data->field3 = 'val3';
$db = JFactory::getDBO();
$db->insertObject( '#__mytable', $data, id );
stdClass是一个php基类,所有其他类都可以从中扩展。
'id'是主键的名称。