0

以前の例をすべて見ましたが、まだサイコロはありません。基本的な php の質問があります。

例はこちらです。1 つのテーブルをクリックして、以下のようにオプションを表示できるようにしたいと考えています。

例

このコードでテーブル名を明示的に宣言すると機能します。

if($_GET['action'] == 'getOptions'){
        $category = $_GET['category'];
        $query = "SELECT `COLUMN_NAME` 
                    FROM `INFORMATION_SCHEMA`.`COLUMNS` 
                    WHERE `TABLE_SCHEMA`='headfirstjson' AND 
                    **`TABLE_NAME`='AmericanOilProduction'**";

        $result = db_connection($query);
        //echo $result;
        $Options = array();

        while ($row = mysql_fetch_array($result)) {                
                $Options[] = $row;
        }
        echo json_encode(array("Options" => $Options));
        exit;
}

この AJAX による変数の受け渡しの組み合わせは、次のことを行いません。

AJAX:

function getOptions(category){
var category = category.value
$.ajax({
    url: "getData.php?action=getOptions",
    type: "GET",
    dataType:"json",
    data: {category:category},
    success: function(json){
        $.each(json.Options,function(){
        var option = "<option>"+this.COLUMN_NAME+"</option>"
        $('#options').append(option)
    });  
    }
});
}

PHP:

if($_GET['action'] == 'getOptions'){
        **$category = $_GET['category']**;
        $query = "SELECT `COLUMN_NAME` 
                    FROM `INFORMATION_SCHEMA`.`COLUMNS` 
                    WHERE `TABLE_SCHEMA`='headfirstjson' AND 
                    `TABLE_NAME`='**.$category.**'";

        $result = db_connection($query);
        //echo $result;
        $Options = array();

        while ($row = mysql_fetch_array($result)) {                
                $Options[] = $row;
        }
        echo json_encode(array("Options" => $Options));
        exit;
    }

誰かが私を助けてくれたら最高です!ありがとう。

4

2 に答える 2

3

$category前後のピリオドと連結しようとしています。二重引用符は変数を展開し、テーブル名を '.AmericanOilProduction.' にします。コードを次のように変更して、連結演算子を削除します。ここでは必要ありません。入力もサニタイズする必要があります...

if($_GET['action'] == 'getOptions'){
    $category = $_GET['category'];
    $query = "SELECT `COLUMN_NAME` 
                FROM `INFORMATION_SCHEMA`.`COLUMNS` 
                WHERE `TABLE_SCHEMA`='headfirstjson' AND 
                `TABLE_NAME`='$category'";

    $result = db_connection($query);
    //echo $result;
    $Options = array();

    while ($row = mysql_fetch_array($result)) {                
            $Options[] = $row;
    }
    echo json_encode(array("Options" => $Options));
    exit;
}
于 2012-05-10T17:59:00.603 に答える
1

URL自体とオプションの両方にURLパラメーターが存在することで、jQueryが混乱していると思いますdata:

action代わりに、パラメーターをdata:オプションに入れてみてください。

data: {
   category: category,
   action: 'getOptions'
},
于 2012-05-10T17:57:03.567 に答える