2014-01-14 2 views
0

Пожалуйста, обратите внимание, что я звоню эту страницу с другой страницы со следующим кодом: cURLОбновление MySQL заявление не стреляя

$chx = curl_init(); 
    curl_setopt($chx, CURLOPT_URL,"../php/giveactions.php"); 
    curl_setopt($chx, CURLOPT_POST, 1); 
    curl_setopt($chx, CURLOPT_POSTFIELDS, "user=myname&actions=10&addy=DCGyHh6cy46ZYqwyy5PzMYLujLZVoPJVPE"); 
    curl_setopt($chx, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($chx, CURLOPT_SSL_VERIFYHOST, 0); 
    curl_setopt($chx, CURLOPT_SSL_VERIFYPEER, 0); 
    curl_setopt($chx, CURLOPT_SSLVERSION,3); 
    $server_output = curl_exec($chx); 
    curl_close ($chx); 

У меня есть страница функции PHP, где находится следующий код:

<? 
    require('db.php'); 

    $moreactions = 0; 
    $totalActions = 0; 

    if (isset($_POST["user"])) { 
     $user_id = $_POST["user"]; 
    } 
    if (isset($_POST["actions"])) { 
     $moreactions = $_POST["actions"]; 
    } 
    if (isset($_POST["addy"])) { 
     $addy = $_POST["addy"]; 
    } 

    $moreactions = round($moreactions/10); 

    $query = "SELECT * FROM `systems` WHERE `name` = '$user_id';" or die(mysql_error()); 
    $results = mysql_query($query); 

    while($row = mysql_fetch_array($results)) { 
     $actions = $row["actions"]; 
    } 

    $totalActions = $actions + $moreactions; 

    mysql_query("UPDATE `systems` SET actions=" . $totalActions . " WHERE `name` = '".$user_id."';") or die(mysql_error()); 

    echo "200ok"; 

    mysql_close(); 
?> 

По какой-то причине я могу вывести $totalActions штраф (отлично вычисляет и т. Д.). Но толькоиспользованием клиента Rest Post, в тот момент я пытаюсь его на веб-сервере, он делает все, кроме UPDATE строки MySQL ...

Прошу прощения за неясности этого вопроса, я откорректирует на основе комментариев/ответы.

Заранее спасибо парням и chappesses

EDIT: Переменные эхо хорошо, запрос MySQL также вторит отлично, все переменные установлены правильно

EDIT 2: Обратите внимание, что «200ok» также повторил штраф в конец файла!

+0

Как насчет "UPDATE' systems' SET 'actions' =". $ TotalActions. "WHERE name = '". $ User_id. "';" –

+0

убедитесь, что вы добавили 'перед именем поля и таблицы –

+0

Это именно то, что у меня уже есть ... –

ответ

0

Исправление состоит в том, что cURL CURLOPT_URL должен быть не относительным.
так http://www.blah.com/whatever.php вместо /whatever.php

Спасибо всем за помощь!

+0

О, какая странная проблема. И если это ошибка, почему она выполняет первую часть? очень странный XD –

+0

Пустота без подсказки: вы можете атаковать скриптом с помощью SQL Injections, потому что вы не избегаете внешнего ввода. Возможно, вы тоже хотите это исправить;) –

+0

Спасибо @MarcelBalzer –

-1

Думаю, используя почтовый клиент REST вы передаете пользователю переменной POST.

Когда просто доступ через браузер $ _POST ["user"] не будет установлен, и поэтому предложение WHERE в UPDATE не соответствует.

+0

, но когда я повторяю запрос mysql, он говорит: '' UPDATE 'systems' SET actions = 1 WHERE' name' = 'myname' ; "' –

+0

Если вы уверены, что UPDATE выполняется, а не выдает ошибку, то я уверен, что проблема связана с предложением WHERE. –

+0

, но 'WHERE' name' = 'myname'' является правильным синтаксис не так ли? –

Смежные вопросы