Новости Joomla

Вышли релизы безопасности Joomla 6.1.1 и Joomla 5.4.6

Релиз безопасности Joomla 6.1.1 и Joomla 5.4.6

Проект Joomla! рад сообщить о выходе Joomla 6.1.1 и Joomla 5.4.6. Это релизы безопасности и исправления ошибок для серий 5.x и 6.x.

0 Пользователей и 1 Гость просматривают эту тему.
  • 18 Ответов
  • 3057 Просмотров
*

vadimled

  • Осваиваюсь на форуме
  • 18
  • 0 / 0
Прошу помощи!
Код: php
defined( '_JEXEC' ) or die( 'Restricted access' );

$db =& JFactory::getDBO();
$user =& JFactory::getUser();

$usname = $user->username;
$id = $user->id;

$params = new JParameter($user->params);
$value = $params->get('someParam');
if($value==''){
$db->setQuery("INSERT INTO #__users (params) VALUES('lastLevels=0\r\n') WHERE id = '$id' ");
$db->query();
echo $db->stderr();
}
Задачка простая: Если в "params" не записаны нужные мне параметры, то нужно их записать.
Но получаю:
"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 'WHERE id = '63'' at line 1 SQL=INSERT IGNORE INTO jos_users (params) VALUES('lastLevels=0 ') WHERE id = '63' "
Где я не прав?
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Re: "You have an error in your SQL syntax" - Почему?
« Ответ #1 : 04.03.2010, 20:31:43 »
Код: sql
INSERT INTO #__users params VALUES('lastLevels=0\r\n') WHERE id = '$id'
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

vadimled

  • Осваиваюсь на форуме
  • 18
  • 0 / 0
Re: "You have an error in your SQL syntax" - Почему?
« Ответ #2 : 04.03.2010, 21:48:47 »
Нет, к сожалению, результат тот же :(
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Re: "You have an error in your SQL syntax" - Почему?
« Ответ #3 : 04.03.2010, 21:53:09 »
Так минуту, что то я невнимательно посмотрел.
Вы делаете INSERT INTO и вставляете только значение поля params, а так делать нельзя.
Насколько позволяют мои скромные знания вам нужно писать что-то вроде
Код: php
$db->setQuery("UPDATE #__users SET params = 'lastLevels=0\r\n' WHERE id = '$id' ");
То есть проводить обновление записи для строки $id.
Ну и если я правильно понял фразу "Если в "params" не записаны нужные мне параметры, то нужно их записать" необходимо добавить проверку на пустоту поля как то так :)
Код: php
$db->setQuery("UPDATE #__users SET params = 'lastLevels=0\r\n' WHERE params <> '' AND  id = '$id' ");

В итоге окончательный вариант мне видится таким (для обновления существующих данных)
Код: php
$db->setQuery("UPDATE #__users SET params = params+'lastLevels=0\r\n' WHERE params <> '' AND  id = '$id' ");
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

SmokerMan

  • Гуру
  • 5290
  • 720 / 26
Re: "You have an error in your SQL syntax" - Почему?
« Ответ #4 : 04.03.2010, 22:59:03 »
там вроде о проверке параметров ничего не было :) и изначально он тупо запихивал туда значение lastLevels=0.
а ошибка идет из-за синтакса, Т.к. намудрил с кавычками. Так что надо либо писать нормально, либо пытаться экранировать.
Код
$query = 'INSERT INTO #__users (params) VALUES ("lastLevels=0\r\n") WHERE id =' . (int) $id;
$db->setQuery($query);
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Re: "You have an error in your SQL syntax" - Почему?
« Ответ #5 : 04.03.2010, 23:00:46 »
Так он изначально пытается построить неправильный запрос по своей сути, ну нельзя так делать (либо я чего то не знаю)
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

SmokerMan

  • Гуру
  • 5290
  • 720 / 26
Re: "You have an error in your SQL syntax" - Почему?
« Ответ #6 : 04.03.2010, 23:07:58 »
Так он изначально пытается построить неправильный запрос по своей сути, ну нельзя так делать (либо я чего то не знаю)
да действительно неправильно.
Чего-то я уже туплю :) забыл про SET.
*

vadimled

  • Осваиваюсь на форуме
  • 18
  • 0 / 0
Re: "You have an error in your SQL syntax" - Почему?
« Ответ #7 : 04.03.2010, 23:08:18 »
Все варианты хороши. Получил : "DB function reports no errors"
Но в базе запись не появилась. ?
beliyadm: именно эта мысль у меня и крутиться, но а как надо?
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Re: "You have an error in your SQL syntax" - Почему?
« Ответ #8 : 04.03.2010, 23:09:52 »
сделайте запрос отдельной переменной, сделайте ее эхо, посмотрите на содержание, попробуйте его руками исполнить в пхпмайадмин..
в общем надо вникать, я дал правильное направление, дальше изучайте
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Re: "You have an error in your SQL syntax" - Почему?
« Ответ #9 : 04.03.2010, 23:15:10 »
Да кстати новой записи у вас и не должно появиться, потому что судя по первому посту мы говорим про обновление существующих записей в таблице, хотите добавлять новую (нового пользователя) - так пишите полностью INSERT, при этом надо иметь в виду что данные пользователя хранятся в нескольких таблицах http://joomlaportal.ru/content/view/1381/68/
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

vadimled

  • Осваиваюсь на форуме
  • 18
  • 0 / 0
Re: "You have an error in your SQL syntax" - Почему?
« Ответ #10 : 04.03.2010, 23:20:54 »
Так,где-то я рядом. Пробую
*

vadimled

  • Осваиваюсь на форуме
  • 18
  • 0 / 0
Re: "You have an error in your SQL syntax" - Почему?
« Ответ #11 : 04.03.2010, 23:28:11 »
Ага. В качестве обновления запрос вида:
Код
$db->setQuery("UPDATE #__users SET params = params+'lastLevels=0\r\n' WHERE params <> '' AND  id = '$id' ");
сработал.Правда стер все вписанные параметры и оставил только '0' даже без имени.
*

vadimled

  • Осваиваюсь на форуме
  • 18
  • 0 / 0
Re: "You have an error in your SQL syntax" - Почему?
« Ответ #12 : 04.03.2010, 23:37:13 »
Вобщем-то мне и не нужно добавлять пользователя.Нужно только обновлять данные.
Без опыта с синтаксисом можно играться бесконечно. Так что прошу помощи у спецов.
В базу проходит только "0", независимо от значения, которое я даю.
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Re: "You have an error in your SQL syntax" - Почему?
« Ответ #13 : 04.03.2010, 23:39:47 »
скорей всего проблема в синтаксисе (кавычки), можно еще работать с функцией concat для объединения текущей строки и существующей
Но а если же для данной записи уже есть какое либо значение lastLevels - придется еще исхитряться и работать через replace и регулярные выражения
Самый примитивный вариант - заранее сделать SELECT этого поля, найти соответствия, заменить при необходимости (на PHP естессно) и после вставлять через UPDATE всю строку
Цитировать
Без опыта с синтаксисом можно играться бесконечно. Так что прошу помощи у спецов.
а как вы хотели получить опыт :)
Могу пригласить на форум http://sql.ru/forum/actualforum.aspx - вот там монстры баз данных обитают, сам частенько заглядываю
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

vadimled

  • Осваиваюсь на форуме
  • 18
  • 0 / 0
Re: "You have an error in your SQL syntax" - Почему?
« Ответ #14 : 04.03.2010, 23:49:29 »
Насчет опыта - вы абсолютно правы.
Я из с-программистов. Там опыта предостаточно. Путь через SELECT очень сишный. Я просто наивно надеялся что в этой задаче есть путь покороче.
Тут проблемка видна сразу. Чтоба я не вписывал на месте параметр=значение , в базе стирается все и появляется "0".
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Re: "You have an error in your SQL syntax" - Почему?
« Ответ #15 : 04.03.2010, 23:53:11 »
Тут проблемка видна сразу. Чтоба я не вписывал на месте параметр=значение , в базе стирается все и появляется "0".
а если тупо?
Код: sql
$db->setQuery("UPDATE #__users SET params = 'какая-то тупая строка просто для примера'  WHERE id = '$id' "); 
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

vadimled

  • Осваиваюсь на форуме
  • 18
  • 0 / 0
Re: "You have an error in your SQL syntax" - Почему?
« Ответ #16 : 04.03.2010, 23:57:56 »
Почему же тупо! Да вы гений.Огромнейшая благодарность!
Запись зашла!
Буду развивать в эту сторону.
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Re: "You have an error in your SQL syntax" - Почему?
« Ответ #17 : 04.03.2010, 23:59:36 »
Почему же тупо! Да вы гений.Огромнейшая благодарность!
Запись зашла!
Буду развивать в эту сторону.
значит как и говорил проблема в кавычках, строку же надо экранировать
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

vadimled

  • Осваиваюсь на форуме
  • 18
  • 0 / 0
Re: "You have an error in your SQL syntax" - Почему?
« Ответ #18 : 05.03.2010, 00:01:47 »
Я вам там карму изменил в благодарность. Надеюсь в правильную сторону :)
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Почему статья не отображается

Автор bazabaza

Ответов: 8
Просмотров: 15097
Последний ответ 14.05.2025, 10:52:43
от antivampoed
Не могу распаковать jpa архив сайта Akeeba backup. ajax error

Автор smadkz

Ответов: 4
Просмотров: 7027
Последний ответ 26.12.2020, 15:15:15
от stendapuss
Fatal error: Class 'JDocument' not found

Автор gabiboi

Ответов: 2
Просмотров: 3872
Последний ответ 04.09.2020, 14:39:07
от svetka_777
simpleform2 ошибка ajax error в Google chrome

Автор safronoff343

Ответов: 1
Просмотров: 3548
Последний ответ 05.06.2020, 20:36:42
от safronoff343
Ошибка Fatal error: Allowed memory size of 73400320 bytes exhausted

Автор Andre109

Ответов: 1
Просмотров: 3438
Последний ответ 03.12.2018, 01:29:56
от voland