ERROR 1064 i您的 SQL 语法有误;
ERROR 1064 iYou have an error in your SQL syntax;
您好,我在向数据库中插入数据时遇到错误:
1064 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 'User,hello,2017-03-30 10:42:43,0)' at line 3 SQL=INSERT INTO
#__registentrys
(name
,type_entry
,date_regist
,published
)
VALUES (Super User,hello,2017-03-30 10:42:43,0)
我的代码:
$greating1=$this->item->greeting;
$datetime = new Jdate('now + 1 hour'); //GTM hour Lisbon
$this->item->menssage1 = $datetime;
//session portection
$user = JFactory::getUser();
if($user->guest)
{
$this->item->menssage2 = "You are not allowed to enter this site";
}
else
{
$username = $user->name;
$this->item->menssage2 = $username;
$db1 = JFactory::getDbo();
$query1 = $db1->getQuery(true);
// Insert columns.
$columns = array('name', 'type_entry', 'date_regist', 'published');
// Insert values.
$values = array($username, $greating1, $datetime, 0);
// Build the query
$query1
->insert($db1->quoteName('#__registentrys'))
->columns($db1->quoteName($columns))
->values(implode(',', $values));
$db1->setQuery($query1);
$db1->execute();
提前感谢您的回答。
文字值必须在引号内
SQL=INSERT INTO `#__registentrys` (`name`,`type_entry`,`date_regist`,`published`)
VALUES ( 'Super User', 'hello', '2017-03-30 10:42:43',0)
否则假定为列名
在值上加引号很容易
->values(implode(',', $db1->quote($values)));
Joomla 数据库使用 $db->quote 来保存字符串,否则它会将值假定为列。因此,您需要按照 joomla 语法像这样更改查询。
这行
$values = array($username, $greating1, $datetime, 0);
需要改为
$values = array($db1->quote($username), $db1->quote($greating1), $db1->quote($datetime), 0);
您好,我在向数据库中插入数据时遇到错误:
1064 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 'User,hello,2017-03-30 10:42:43,0)' at line 3 SQL=INSERT INTO
#__registentrys
(name
,type_entry
,date_regist
,published
) VALUES (Super User,hello,2017-03-30 10:42:43,0)
我的代码:
$greating1=$this->item->greeting;
$datetime = new Jdate('now + 1 hour'); //GTM hour Lisbon
$this->item->menssage1 = $datetime;
//session portection
$user = JFactory::getUser();
if($user->guest)
{
$this->item->menssage2 = "You are not allowed to enter this site";
}
else
{
$username = $user->name;
$this->item->menssage2 = $username;
$db1 = JFactory::getDbo();
$query1 = $db1->getQuery(true);
// Insert columns.
$columns = array('name', 'type_entry', 'date_regist', 'published');
// Insert values.
$values = array($username, $greating1, $datetime, 0);
// Build the query
$query1
->insert($db1->quoteName('#__registentrys'))
->columns($db1->quoteName($columns))
->values(implode(',', $values));
$db1->setQuery($query1);
$db1->execute();
提前感谢您的回答。
文字值必须在引号内
SQL=INSERT INTO `#__registentrys` (`name`,`type_entry`,`date_regist`,`published`)
VALUES ( 'Super User', 'hello', '2017-03-30 10:42:43',0)
否则假定为列名
在值上加引号很容易
->values(implode(',', $db1->quote($values)));
Joomla 数据库使用 $db->quote 来保存字符串,否则它会将值假定为列。因此,您需要按照 joomla 语法像这样更改查询。 这行
$values = array($username, $greating1, $datetime, 0);
需要改为
$values = array($db1->quote($username), $db1->quote($greating1), $db1->quote($datetime), 0);