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
Форумы портала PHP.SU :: Версия для печати :: UPDATE не производит эффекта
Форумы портала PHP.SU » » Вопросы новичков » UPDATE не производит эффекта

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

1. Arad - 25 Февраля, 2012 - 20:05:47 - перейти к сообщению
Здравствуйте,Уважаемые пользователи форума!Моя проблема заключается вот в чём,решил подключить платёжную систему,по задумке скрипт обработчик должен оплачиваемую сумму прибавить к столбцу 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.  


Не могли бы вы мне подсказать,в чём моя ошибка и что нужно исправить?
2. DelphinPRO - 25 Февраля, 2012 - 20:17:54 - перейти к сообщению
ё-моё, делайте вывод ошибок, PHP сам скажет вам что что-то не так.

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


а проблема в том что значения в запросах надо брать в кавычки, а имена таблиц и полей - в обратные кавычки.
3. Arad - 25 Февраля, 2012 - 20:38:01 - перейти к сообщению
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.  
4. DelphinPRO - 25 Февраля, 2012 - 20:41:46 - перейти к сообщению
mysql_error() ошибку выдает? если да - какую?
5. Arad - 25 Февраля, 2012 - 21:01:01 - перейти к сообщению
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
6. DelphinPRO - 25 Февраля, 2012 - 21:22:42 - перейти к сообщению
ошибка в запросе, здесь: `Donate`+'$test1'
Что вы этим хотели сделать? Увеличить имеющееся значение?
(Добавление)
я думаю вот так прокатит
PHP:
скопировать код в буфер обмена
  1. mysql_query("UPDATE Accounts1 SET Donate=Donate+".(int)$test1." WHERE ID='$test2'")
в смысле - цифру которая в $test1 не надо в кавычки брать. Закавычивают текстовые значения.
7. Arad - 26 Февраля, 2012 - 13:03:31 - перейти к сообщению
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.'");
8. DelphinPRO - 26 Февраля, 2012 - 13:33:09 - перейти к сообщению
проблема здесь SET Donate=Donate+9 WHERE ID=4)
нужно уточнить , поддерживает ли мускул такое присвоение значений. (Donate+9)
9. Arad - 26 Февраля, 2012 - 13:39:30 - перейти к сообщению
DelphinPRO пишет:
проблема здесь SET Donate=Donate+9 WHERE ID=4)
нужно уточнить , поддерживает ли мускул такое присвоение значений. (Donate+9)

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

И всё проходит успешно,данные прибавляются.
10. tuareg - 26 Февраля, 2012 - 13:43:59 - перейти к сообщению
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."");
11. Arad - 26 Февраля, 2012 - 13:48:05 - перейти к сообщению
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 сумма которую пользователь оплатил.Зачем же ставить условие,где ид аккаунта равно сумме?
12. tuareg - 26 Февраля, 2012 - 13:58:43 - перейти к сообщению
Нет я ошибся с переменными Улыбка . Я имел ввиду кавычки так поставьте. И тогда у Вас получится (должен) такой запрос
PHP:
скопировать код в буфер обмена
  1. UPDATE Accounts1 SET Donate=Donate+9 WHERE ID=4
13. Arad - 26 Февраля, 2012 - 14:08:55 - перейти к сообщению
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

Как я понял,она переводится как "Пустой запрос".Может я вывод ошибки как то не так поставил?
14. tuareg - 26 Февраля, 2012 - 14:22:29 - перейти к сообщению
Сделайте сначала просто

Посмотрите что выводит. Скопируйте и сделайте запрос через пхпмайадмин.
15. Arad - 26 Февраля, 2012 - 14:22:38 - перейти к сообщению
Всё это дело на движке Joomla,и она подключена к другой базе.
А этот скрипт по идеи должен работать с базой,которая находится на другом сервере.
Возможно ли такое,что этот запрос идёт к базе,к которой подключён движок?

 

Powered by ExBB FM 1.0 RC1