Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: UPDATE не производит эффекта

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Без описания
Arad
Отправлено: 25 Февраля, 2012 - 20:05:47
Post Id



Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)




Здравствуйте,Уважаемые пользователи форума!Моя проблема заключается вот в чём,решил подключить платёжную систему,по задумке скрипт обработчик должен оплачиваемую сумму прибавить к столбцу Donate значение переменной $test1.Информация в эти переменные должна записываться из POST запроса.Так-же стоит условие,по которому информация в столбце Donate должна обновляться,в той строке,где ID равна значению переменной $test2. При тестировании,выяснилось,что в базу ничего не записывается,то есть,какое было значение у Donate,такое и осталось.
Вот сам скрипт обработчика:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4. require_once ('parse.inc.php');
  5.  
  6. $q = $_POST;
  7.  
  8. $params = _yusoft_parse($q);
  9. $hostname = "****";
  10. $username = "***";
  11. $password = "*****";
  12. $dbName = "******";
  13.  
  14. $test1 = $params['partner_income'];
  15. $test2 = $params['name'];
  16.  
  17. if ($params['check']) {
  18.  
  19.   // Действия по зачислению платежа. A1Lite - Ключи совпали.
  20.  
  21.   $message  = 'Платеж ' . $params['order_id'] . ' ';
  22.   MYSQL_CONNECT($hostname,$username,$password) OR DIE("Не могу создать соединение ");
  23.   mysql_select_db($dbName);
  24.   mysql_query("UPDATE Accounts1 SET Donate=Donate+'$test1' WHERE ID='$test2'");
  25.  
  26. }
  27. else {
  28.  
  29.   // Действия по ошибке. A1Lite - Ключи не совпали.
  30.  
  31.   $message  = 'Платеж не принят!';
  32.  
  33.  
  34. }
  35.  
  36. jimport('joomla.error.log');
  37. $log =& JLog::getInstance();
  38. $log->addEntry(array('comment' => $message, 'status' => 0));
  39.  
  40. ?>
  41.  


Не могли бы вы мне подсказать,в чём моя ошибка и что нужно исправить?
 
 Top
DelphinPRO
Отправлено: 25 Февраля, 2012 - 20:17:54
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




ё-моё, делайте вывод ошибок, PHP сам скажет вам что что-то не так.

PHP:
скопировать код в буфер обмена
  1. mysql_query("UPDATE Accounts1 SET Donate=Donate+'$test1' WHERE ID='$test2'")
  2.  or die(mysql_error());


а проблема в том что значения в запросах надо брать в кавычки, а имена таблиц и полей - в обратные кавычки.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Arad
Отправлено: 25 Февраля, 2012 - 20:38:01
Post Id



Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)




DelphinPRO пишет:
ё-моё, делайте вывод ошибок, PHP сам скажет вам что что-то не так.

PHP:
скопировать код в буфер обмена
  1. mysql_query("UPDATE Accounts1 SET Donate=Donate+'$test1' WHERE ID='$test2'")
  2.  or die(mysql_error());


а проблема в том что значения в запросах надо брать в кавычки, а имена таблиц и полей - в обратные кавычки.

Хм,как я вас понял,оформить нужно вот так?
PHP:
скопировать код в буфер обмена
  1.  
  2.   mysql_query(" UPDATE `Accounts1` SET `Donate`=`Donate`+'$test1' WHERE `ID`='$test2'");
  3.  
 
 Top
DelphinPRO
Отправлено: 25 Февраля, 2012 - 20:41:46
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




mysql_error() ошибку выдает? если да - какую?


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Arad
Отправлено: 25 Февраля, 2012 - 21:01:01
Post Id



Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)




DelphinPRO пишет:
mysql_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 'SET `Donate`=`Donate`+'9.5' WHERE `ID`='4')' at line 1
 
 Top
DelphinPRO
Отправлено: 25 Февраля, 2012 - 21:22:42
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




ошибка в запросе, здесь: `Donate`+'$test1'
Что вы этим хотели сделать? Увеличить имеющееся значение?
(Добавление)
я думаю вот так прокатит
PHP:
скопировать код в буфер обмена
  1. mysql_query("UPDATE Accounts1 SET Donate=Donate+".(int)$test1." WHERE ID='$test2'")
в смысле - цифру которая в $test1 не надо в кавычки брать. Закавычивают текстовые значения.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Arad
Отправлено: 26 Февраля, 2012 - 13:03:31
Post Id



Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)




DelphinPRO пишет:
ошибка в запросе, здесь: `Donate`+'$test1'
Что вы этим хотели сделать? Увеличить имеющееся значение?
(Добавление)
я думаю вот так прокатит
PHP:
скопировать код в буфер обмена
  1. mysql_query("UPDATE Accounts1 SET Donate=Donate+".(int)$test1." WHERE ID='$test2'")
в смысле - цифру которая в $test1 не надо в кавычки брать. Закавычивают текстовые значения.

Попробовал исправить,переменная $test2 тоже несёт цифру,поэтому исправил и её.И вот что выдаёт всё равно:
Цитата:
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 'SET Donate=Donate+9 WHERE ID=4)' at line 1

Получается,проблема где то ещё.Вот собственно сам код запроса,который получился:
PHP:
скопировать код в буфер обмена
  1.   mysql_query("UPDATE Accounts1 SET Donate=Donate+".(int)$test1." WHERE ID='.(int)$test1.'");

(Отредактировано автором: 26 Февраля, 2012 - 13:06:01)

 
 Top
DelphinPRO
Отправлено: 26 Февраля, 2012 - 13:33:09
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




проблема здесь SET Donate=Donate+9 WHERE ID=4)
нужно уточнить , поддерживает ли мускул такое присвоение значений. (Donate+9)


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Arad
Отправлено: 26 Февраля, 2012 - 13:39:30
Post Id



Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)




DelphinPRO пишет:
проблема здесь SET Donate=Donate+9 WHERE ID=4)
нужно уточнить , поддерживает ли мускул такое присвоение значений. (Donate+9)

Если я вас правильно понял,то в PhpMyAdmin я вручную отправил запрос
CODE (htmlphp):
скопировать код в буфер обмена
  1. UPDATE Accounts1 SET Donate=Donate+9 WHERE ID=4

И всё проходит успешно,данные прибавляются.
 
 Top
tuareg
Отправлено: 26 Февраля, 2012 - 13:43:59
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




PHP:
скопировать код в буфер обмена
  1. mysql_query("UPDATE Accounts1 SET Donate=Donate+".(int)$test1." WHERE D=".(int)$test1);

Сделайте так. Или вот так
PHP:
скопировать код в буфер обмена
  1. mysql_query("UPDATE Accounts1 SET Donate=Donate+".(int)$test1." WHERE D=".(int)$test1."");
 
 Top
Arad
Отправлено: 26 Февраля, 2012 - 13:48:05
Post Id



Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)




tuareg пишет:
PHP:
скопировать код в буфер обмена
  1. mysql_query("UPDATE Accounts1 SET Donate=Donate+".(int)$test1." WHERE D=".(int)$test1);

Сделайте так. Или вот так
PHP:
скопировать код в буфер обмена
  1. mysql_query("UPDATE Accounts1 SET Donate=Donate+".(int)$test1." WHERE D=".(int)$test1."");

А зачем?В переменной test2 записано id аккаунта,а в test1 сумма которую пользователь оплатил.Зачем же ставить условие,где ид аккаунта равно сумме?
 
 Top
tuareg
Отправлено: 26 Февраля, 2012 - 13:58:43
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




Нет я ошибся с переменными Улыбка . Я имел ввиду кавычки так поставьте. И тогда у Вас получится (должен) такой запрос
PHP:
скопировать код в буфер обмена
  1. UPDATE Accounts1 SET Donate=Donate+9 WHERE ID=4
 
 Top
Arad
Отправлено: 26 Февраля, 2012 - 14:08:55
Post Id



Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)




tuareg пишет:
Нет я ошибся с переменными Улыбка . Я имел ввиду кавычки так поставьте. И тогда у Вас получится (должен) такой запрос
PHP:
скопировать код в буфер обмена
  1. UPDATE Accounts1 SET Donate=Donate+9 WHERE ID=4

Сделал так,проблема осталась.Тогда я вывел ошибку следующим образом:
PHP:
скопировать код в буфер обмена
  1. $request = mysql_query("UPDATE Accounts1 SET Donate=Donate+".(int)$test1." WHERE ID=".(int)$test2."");

PHP:
скопировать код в буфер обмена
  1. mysql_query($request);
  2.  
  3. if (!mysql_error())
  4.  
  5.   echo "Обновление данных прошло успешно!";
  6.  
  7. else echo "Ошибка базы данных. MySQL пишет:", mysql_error();

И вот что мне выдало:
Цитата:
Query was empty

Как я понял,она переводится как "Пустой запрос".Может я вывод ошибки как то не так поставил?

(Отредактировано автором: 26 Февраля, 2012 - 14:10:32)

 
 Top
tuareg
Отправлено: 26 Февраля, 2012 - 14:22:29
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




Сделайте сначала просто

Посмотрите что выводит. Скопируйте и сделайте запрос через пхпмайадмин.
 
 Top
Arad
Отправлено: 26 Февраля, 2012 - 14:22:38
Post Id



Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)




Всё это дело на движке Joomla,и она подключена к другой базе.
А этот скрипт по идеи должен работать с базой,которая находится на другом сервере.
Возможно ли такое,что этот запрос идёт к базе,к которой подключён движок?
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB