Проблема обновления БД MySQL с использованием LSL - PullRequest
1 голос
/ 22 июля 2009

У меня следующая проблема. Я обновляю свою базу данных mysql, используя LSL. В базе данных есть соответствующая таблица и файл update.php с соответствующими настройками (протестировал его с помощью HTML-форм и php). Проблема в том, что запись добавлена, но в соответствующих полях нет значений.

string time;
string address;
string message;
integer num_left;
integer listen_handle;

default
{    
    state_entry()
    {   
        llSay(0,"Touch to insert messages into DB");
    }
    touch_start(integer total_number)
    {
        key owner = llGetOwner();
        string name = llKey2Name(owner);

        integer strlength = llStringLength(message);

        string url = "http://antima.freehostia.com/update.php?";
        float timing = llGetTime(); //Instead getting, and then resetting the time, we could use llGetAndReset() to accomplish the same thing.
        llResetTime();
        //time = (string)timing;
        time = "12:23";
        address = "here";
        message = "This is a test of url";
        num_left = 12;
        url += time;
        url += address;
        url += message;
        url += "12";
        //url += (string)num_left;

        llHTTPRequest(url, [HTTP_METHOD, "POST"], "");
    }
}

Обновление

Я изменил код на:

    time = "12:23";
    address = "here";
    message = "This is a test of url";
    num_left = 12;
    url += "id" + id;
    url += "&" + time;
    url += "&" + address;
    url += "&" + message;
    url += "&" + "12";

но у меня проблема с получением данных с помощью POST. На стороне PHP я использую это для получения значений:

$data = $_POST;
$var = explode("&", $data);
$time = $var[1];
$address=$var[2];
$message=$var[3];
$num_left=$var[4];

однако что-то все еще не так (я думаю, на этот раз со стороны PHP), и добавлена ​​еще одна пустая запись Я проверил ответ, предоставленный LSL, просто набрав:

$data = "http://antima.freehostia.com/update.php?&12:23&here&This is a test of url&12";

и это сработало.

Как я могу получить всю строку из $ _POST без указания имен полей и сохранить ее в переменной $ data? Может быть, это что-то легко, но я не мог ничего найти. Большая часть PHP использует некоторые поля формы и формы.

Ответы [ 3 ]

1 голос
/ 30 июля 2011

Когда вы используете POST, вы можете поместить данные в виде строки в третий аргумент, например:

llHTTPRequest("http://antima.freehostia.com/update.php", [HTTP_METHOD, "POST"],
   "12:23&here&This is a test of url&12");

Одна из проблем, с которой вы бы столкнулись при размещении данных с помощью URL-адреса, заключается в том, что их сначала нужно будет кодировать с помощью llEscapeURL (), но вам не нужно делать это с помощью POST и иметь данные в третьем аргументе.

1 голос
/ 22 июля 2009

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

То, что вы хотите сделать, похоже выглядит:

    time = "12:23";
    address = "here";
    message = "This is a test of url";
    num_left = 12;
    url += "time=" + time;
    url += "&address=" + address;
    url += "&message=" + message;
    url += "&num_left=" + num_left;
0 голосов
/ 21 июля 2010
$nome = $_POST['nome'];
$localizacao = $_POST['localizacao'];
$mensagem = $_POST['mensagem'];
...