我的代码:
<?php
define('_JEXEC', 1);
if (file_exists(__DIR__ . '/defines.php'))
{
include_once __DIR__ . '/defines.php';
}
if (!defined('_JDEFINES'))
{
define('JPATH_BASE', __DIR__);
require_once JPATH_BASE . '/includes/defines.php';
}
require_once JPATH_BASE . '/includes/framework.php';
require_once JPATH_BASE . '/libraries/joomla/factory.php';
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$columns = array('title', 'fulltext', 'state', 'catid', 'created_by', 'access');
$values = array('test', 'test test test', 1, 9, 889, 1);
$query
->insert($db->quoteName('#__content'))
->columns($db->quoteName($columns))
->values(implode(',', $values));
$db->setQuery($query);
$db->query();
完整错误:
Error displaying the error page: Application Instantiation Error: You have an error in your SQL
syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near
'test test, 1 , 9, 889, 1)' at line 3 SQL = INSERT INTO `cxq09_content` (`title`, `fulltext`, `state`, `catid`, `created_by`, `access`) VALUES (test, test test test, 1, 9, 889, 1)
Joomla安装在OpenServer上。
怎么了?
答案 0 :(得分:2)
可以使用
来引用insert语句的值$query
->insert($db->quoteName('#__content'))
->columns($db->quoteName($columns))
->values(implode(',', $db->quote($values)));
如果您的Joomla版本足够新,请参阅documentation to quote:
引用并可选地将字符串转义为数据库要求 用于数据库查询。
quote(mixed $ text,boolean $ escape = true):string
注意:在12.3
中添加了接受字符串数组
如果您的版本不接受字符串数组,则必须引用每个数组元素。