LSL kullanarak MySQL DB güncelleme Sorunu

2 Cevap php

Ben şu sorun var. Ben LSL kullanarak benim mysql veritabanını güncelleyerek ediyorum. Veritabanındaki bir tablonun olduğunu ve uygun ayarları (html form ve php ile test ettik) orada update.php olduğunu. Problem kayıt ama uygun alanlara herhangi bir değer eklenmiş olmasıdır.

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"], "");
    }
}

Update

Ben kodu değişti:

    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";

ama ben POST kullanarak veri alma ile ilgili bir sorun var. PHP tarafında ben değerleri almak için bunu kullanın:

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

Ancak hala bir şeyler yanlış (Ben PHP tarafında bu sefer düşünüyorum) ve başka boş kayıt eklenir. Ben sadece yazarak LSL tarafından sağlanan yanıtı test ettik:

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

ve işe yaradı.

Nasıl alanların isimlerini belirterek ve $ veri değişkeni saklamak olmadan $ _POST itibaren bütün dize alabilirim? Belki de kolay bir şey, ama hiçbir şey bulamadı. PHP çoğu bazı formu ve form alanlarını kullanır.

2 Cevap

Eğer requets göndermek ve umarım sorunu görürsünüz önce geri kendinize URL yankı. URL sadece birlikte dize değerlerini bitiştirmek yerine, yani bu değerler değişkenleri istemek için atanan kurduktan tarafından monte ediliyor.

Ne yapmak istediğinizi muhtemelen gibi görünüyor:

    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;

POST kullandığınızda bunun gibi, üçüncü argüman bir dize olarak verileri koyabilirsiniz:

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

Eğer URL ile veri koyarak olurdu bir sorunu llEscapeURL () ile ilk olarak kodlanmış olması gerekir ki, ama yapmanız gerekmez POST ve üçüncü argüman verilere sahip.