-1

私のテストでは、文字列をPHP変換jsonしてデータベースに挿入するために使用しmysqlます。

phpファイルは次のようになります。

if (isset($_GET['data'])) {  // Is er data binnengekomen, zoja voer dan de rest uit
$data = json_decode($_GET['data'], true); 
$id = $data['id'];                          //Het personeelsnummer
$latitude = $data['latitude'];              // De latitude (coordinaten)
$longitude = $data['longitude'];            // De longitude (coordinaten)
$timestamp = $data['timestamp'];            // De tijd

$result = mysql_query("SELECT * FROM locatie WHERE id='$id'");      //Kijken of het personeelsnummer al in de database staat of niet
if(mysql_num_rows($result)>0)                                       //Hier wordt de functie uitgevoerd als het al in de database staat
{
$query = "Update locatie                                            
SET     longitude = '$longitude',
   latitude = '$latitude',
   timestamp = '$timestamp'
WHERE id = '$id'";  

$result = mysql_query($query) or die('Query failed: ' . mysql_error());
echo "OK";

// Voer de $query(de Update Functie) uit
mysql_free_result($result); 

    }                               // Als het er in staat, Update alle waardes die voor het personeelsnummer gelden. Wordt dus geen geschiedenis opgeslagen
else                                                                    //Hier wordt de functie uitgevoerd als het nog niet in de database staat

{
//Als het een nieuw nummer is
$query = sprintf("INSERT INTO locatie (id, longitude, latitude, timestamp) VALUES ('%s', '%s', '%s', '%s') ", mysql_real_escape_string($id) , mysql_real_escape_string($longitude),    mysql_real_escape_string($latitude), mysql_real_escape_string($timestamp));}               // Als het er nog niet instaat voeg dan het personeelsnummer in en de andere waardes.         



$result = mysql_query($query) or die('Query failed: ' . mysql_error());
echo "OK";

// Voer de $query(de Insert Functie) uit
mysql_free_result($result);
}

これは完全に正常に機能しますが、会社はASPに含めるように要求しました。

しかし、要点は、そのimはaspが苦手だということです。

これが私のコードです:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Naamloos document</title>
</head>

<body>

    <% 
    Dim sConnection, objConn , objRS 

    sConnection = "DRIVER={MySQL ODBC 3.51 Driver}; SERVER=localhost; DATABASE=Your_Mysql_DB;   UID=mysql_username;PASSWORD=mysql_password; OPTION=3" 

    Set objConn = Server.CreateObject("ADODB.Connection") 

    objConn.Open(sConnection) 

    If Request.Form("data") <> "" Then

    Request.QueryString["id"] 
    Request.QueryString["longitude"] 
    Request.QueryString["latitude"] 
    Request.QueryString["timestamp"] 

    Set objRS = objConn.Execute("SELECT * FROM locatie WHERE id='id'")



    If objRS <> "" Then
    Set objRS = objConn.Execute("Update locatie                                             
    SET     longitude = 'longitude',
       latitude = 'latitude',
       timestamp = 'timestamp'
    WHERE id = 'id'")
    Else
    Set objRS = objConn.Execute("INSERT INTO locatie (id, longitude, latitude, timestamp)  VALUES ('id', 'longitude', 'latitude', 'timestamp') ")
    End If




    objRS.Close
    Set objRS = Nothing
    objConn.Close
    Set objConn = Nothing
    %>

    </body>
    </html>

私はこのjsonstringを送ります:

2012-10-10 08:50:32.011 Appname[4049:c07] Post String =http://www.yourdomain.nl/locatie.asp?data=%7B%22id%22:%220612833397%22,%22longitude%22:%22-143.406417%22,%22latitude%22:%2232.785834%22,%22timestamp%22:%2210-10%2007:56%22%7D

編集

だから私の質問は:

ASPがPHPファイルと同じように機能する場合。jsonをデコードするために適切なメソッドを使用するかどうか、データベースでid = idの場合に適切なメソッドを使用するかどうか、データベースで適切な方法を使用して解析するかどうかはわかりません

4

2 に答える 2

2

ASP は php に似ているのは微妙ですが、ASP には拡張機能や API などはあまりありません。

定義上、ASP (Classic-ASP) はかなり前に廃止されており、下位互換性を維持するためだけに現在の Windows バージョンでのみ管理されています。しかし、この言語はもう micosoft によって開発されていません。

これは、ASPがJSON自体を解析できないことを知っておく必要があると言いました。代わりに、 Classic aspサーバーサイドJSONライブラリで詳細を確認できる外部ライブラリを実装する必要があります。

他の問題では、コードで検出したいくつかのエラーに気付きました。

  • Request.QueryString[XXXXXX] []の文字は無効です。代わりに()を使用してください。
  • あなたは閉じない If Request.Form("data") <> "" Then
于 2012-10-18T13:37:34.063 に答える
1

Request.Form と Request.Querystring コレクションを混同しています。あなたの例ではクエリ文字列 (GET) でデータを送信するので、Request.Querystring コレクションを使用する必要があります。

したがって、ln20 は

If Request.Querystring("data") <> "" Then

それ以外の

If Request.Form("data") <> "" Then

また、json が正常に処理されているかどうかを評価するのも困難です。これは、response.write Request.Querystring("data") を使用して実際の jsonstring を確認することでテストできます。jsonlint.com の使用をお勧めします

編集: 最後に、他の投稿で Rafael が述べたように、ビルトインの json_decode アナログがないため、実際にはサードパーティのライブラリが必要です。私は個人的にSO投稿のソリューションが好きですクラシックASPでJSONを解析するための良いライブラリはありますか? Douglas Crockford の json2.js JavaScript ライブラリ サーバーサイドを使用することをお勧めします。

于 2012-10-18T13:38:34.107 に答える