• Bitte schaltet eure Ad Blocker aus. SLinfo kann nur betrieben werden, wenn es durch Werbung Einnahmen erzielt. Vielen Dank!!
  • Wir freuen uns, wenn du dich in unserem Forum anmeldest. Bitte beachte, dass die Freigabe per Hand durchgeführt wird (Schutz vor Spammer). Damit kann die Freigabe bis zu 24 Stunden dauern.
  • Wir verwenden Cookies, um Inhalte und Anzeigen zu personalisieren, Funktionen für soziale Medien anbieten zu können und die Zugriffe auf unsere Website zu analysieren. Sie geben Einwilligung zu unseren Cookies, wenn Sie unsere Webseite weiterhin nutzen.

llHttpRequest: Schreibt nicht in Datenbank

tom.fox

Nutzer
hi.

ich mache es mal kurz. könnt ihr aus meinem code erkennen warum keine daten in meine sql-datenbank geschrieben werden?

PHP CODE:
Code:
<?php
  
  
    // Database Settings
    define('DB_HOST','*****');       // MySQL Server Host
    define('DB_USER','****');     // MySQL User
    define('DB_PASS','******');                // MySQL Password
    define('DB_NAME','*******');          //The name of the database
    
    //Connect to the database or throw a nasty error
    $db = mysql_connect(DB_HOST,DB_USER,DB_PASS) or die(mysql_error());
    mysql_select_db(DB_NAME,$db) or die(mysql_error());
  

    
    switch(strtoupper($_REQUEST['command'])){
      case 'STORE':
        cmd_store($_REQUEST);
        break;
      default:
        echo ("Invalid Command Requested");
    }
  
    //close the database connection
    mysql_close($db);
  
    //stop execution
    die();


    function cmd_store($params){
      // Check for required parameters
      $req = array('slname','slid','sllocation','sl_n1','sl_n2');
      foreach($req as $rkey){
        $$rkey = mysql_real_escape_string($params[$rkey]);
      }
 
      //create and execute the query
      $sql = "INSERT INTO lslstore (name, id, location, num1, num2) VALUES ('$name', '$id', '$location', '$num1', '$num2',  NOW())";
      $result = mysql_query($sql) or die(mysql_error());
      echo 'Store successful.';
    }
  
  
   
    }
  ?>


Code:
key requestOfServerStatusRequestid;
key saveData;

string serverStatus="no_status_received";


string name;
key currentUser;
string location;
string n1;string n2;string n3;string n4;string n5;string n6;

default
{
    state_entry()
    {



    }
    

    touch_start(integer number)
    {
        
        name = llDetectedName(0);
        currentUser = llDetectedKey(0);
        location = "Home";
        n1="1";
        n2="2";
 

         string urlStore = "http://xxx.xxx.com/datei.php?command=store&slname="+name+"&slid="
        +(string)currentUser+"&sllocation="+location+"&sl_n1="+n1+"&sl_n2="+n2;
        
        saveData = llHTTPRequest(urlStore,[HTTP_METHOD,"GET"],"");
        
 
        
  
    }
    

    http_response(key request_id, integer status, list metadata, string body)
    {
        if (request_id == saveData)
        {
            // The response to save of status should be "Store successful."
                llWhisper(0, "Response to store attempt: " + body);
        }
        else if (request_id == requestOfServerStatusRequestid)
        {
                // The response to server status request is the server status
                llWhisper(0, "Response to server status request: " + body);
                serverStatus = body;
              
        }
        else
        {            
            llSay(0,(string)status+" error");
        }
    }
    
    



}

also die login-infos sind korrekt. habe es schon mit anderen php-skripten versucht.
 
Hallo,

früher war PHP pingelig wenn der Funktionsaufruf vor deren Definition stand. Sollte aber nicht das Problem sein.

Das "die();" würde ich rausnehmen, macht an der Stelle keinen Sinn.

Du hast 5 Tabellenfelder und 6 Values angegeben.
Code:
$sql = "INSERT INTO lslstore (name, id, location, num1, num2) VALUES ('$name', '$id', '$location', '$num1', '$num2',  NOW())";

Funktioniert Dein PHP-Skript für sich alleine, also bei direktem Aufruf per Browser?

Grüße


P.S.: Geschmacksache, INSERT INTO... SET ist "lesbarer":
Code:
$sql = "INSERT INTO
            tbl_tabelle
        SET
            feld1 = '$vari1',
            feld2 = '$vari2',
            feld3 = '$vari3'";
 
wow. erstmal danke für die vielen und hilfreichen antworten. war wirklich ein parameter zuviel. Bin noch Anfänger was PHP angeht. Und wusste nicht, dass das NOW() auch als parameter zählt....

habe nun nen php-code geändert: Nachricht in SL "Store successful". PHPMyAdmin zeigt auch an dass Daten geschrieben wurden, sind aber nicht wirklich welche drin. Heisst es wurde eine Zeile eingefügt ohne Infos...

Neuer Code
Code:
<?php

    // Database Settings
    define('DB_HOST','xxxxxx');       // MySQL Server Host
    define('DB_USER','xxxxx');     // MySQL User
    define('DB_PASS','xxxxxx');                // MySQL Password
    define('DB_NAME','xxxxxx');          //The name of the database
    
    //Connect to the database or throw a nasty error
    $db = mysql_connect(DB_HOST,DB_USER,DB_PASS) or die(mysql_error());
    mysql_select_db(DB_NAME,$db) or die(mysql_error());
  

    switch(strtoupper($_REQUEST['command'])){
      case 'STORE':
        cmd_store($_REQUEST);
        break;
      default:
        echo ("Invalid Command Requested");
    }
  
    //close the database connection
    mysql_close($db);
  
    //stop execution
    die();
    

     * Command: STORE
     * Usage: Stores a string in the database

    **/
    function cmd_store($params){
      // Check for required parameters
      $req = array('slname','slid','sllocation','sl_n1','sl_n2');
      foreach($req as $rkey){
        $$rkey = mysql_real_escape_string($params[$rkey]);
      }
      //$owner_id = get_owner_id();
      //create and execute the query
      $sql = "INSERT INTO lslstore (name, id, location, num1, num2) VALUES ('$name', '$id', '$location', '$num1', '$num2')";

       $result = mysql_query($sql) or die(mysql_error());
       echo 'Store successful.';
  }
  ?>

SL -Skript immer noch das gleiche.... Danke sehr :)
 
Hi,
Keane Koga schrieb:
Funktioniert Dein PHP-Skript für sich alleine, also bei direktem Aufruf per Browser?

Dein SLS-Code:
Code:
string urlStore = "http://xxx.xxx.com/datei.php?command=store&slname="+name+"&slid="
        +(string)currentUser+"&sllocation="+location+"&sl_n1="+n1+"&sl_n2="+n2;
Also, was passiert in der DB wenn Du die korrekte Adresse direkt in Deinen Browser eingibst?

-> http://xxx.xxx.com/datei.php?comman...=12345&sllocation=Musterort&sl_n1=12&sl_n2=34


Beste Grüße

Keane


[edit]
Code:
    function cmd_store($params){
      // Check for required parameters
 
     $req = array('slname','slid','sllocation','sl_n1','sl_n2'); 
     foreach($req as $rkey){
        $$rkey = mysql_real_escape_string($params[$rkey]);
      }
Obacht! Hier werden variable Variablen angelegt:
$slname
$slid
$sllocation
$sl_n1
$sl_n2

-> SQL-String anpassen, EXAKTE Feld- und Variabelnamen verwenden.
[/edit]
 

Users who are viewing this thread

Zurück
Oben Unten