簡體   English   中英

PHP 多維數組鍵值

[英]PHP Multidimensional Array Key Values

我正在嘗試為我的項目構建一個查詢構建器,我可以在其中傳遞任何數組、執行 SELECT 語句、返回結果並將它們格式化回 JavaScript。

我已經嘗試了幾天來讓它工作,但我在 PHP 方面有點新手,坦率地說,手冊似乎沒有幫助。

首先,我構建以下數組:

for(var i = 0; i < FormSelect.length; i++){
    if(FormSelect[i].selectedIndex != 0){
        if(WhereClause.length == 0){
            var WhereObject = {
                ColumnName: FormSelect[i].id,
                ColumnValue: FormSelect[i].value
            }
        }
        else{
            var WhereObject = {
                Operator: " AND ",
                ColumnName: FormSelect[i].id,
                ColumnValue: FormSelect[i].value
            }
        }
    }
    WhereClause.push(WhereObject);
}

然后我將請求發送到服務器,如下所示,一切正常:

var FormSearchData = 
    "ColumnNames=" + ColumnNames
    + "&"
    + "ViewName=" + ViewName
    + "&"
    + "WhereClause=" + WhereClause
    + "&"
    + "FormSearchExecuted=1"

var FormSearchXMLHTTPRequest = new XMLHttpRequest();
FormSearchXMLHTTPRequest.onload = function(){
    console.log(FormSearchXMLHTTPRequest.responseText);
}
FormSearchXMLHTTPRequest.open("POST", RootData + "global/search/search.php", false);
FormSearchXMLHTTPRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
FormSearchXMLHTTPRequest.send(FormSearchData);

PHP 中的服務器端是問題開始的地方。

if(isset($_POST["FormSearchExecuted"]) && !empty($_POST["FormSearchExecuted"])){

if(empty($_POST["ColumnNames"])){
    $column_names = "*";
}
else{
    $column_names = $_POST["ColumnNames"];
}
if(!empty($_POST["WhereClause"])){

    if(count($_POST['WhereClause']) == 1){
        $form_search_sql = "DECLARE @ColumnNames VARCHAR SET @ColumnNames = ? DECLARE @ViewName VARCHAR(255) SET @ViewName = ? DECLARE @WhereColumn VARCHAR SET @WhereColumn = ? DECLARE @WhereValue VARCHAR SET @WhereValue = ? EXEC('SELECT ' + @ColumnNames + ' FROM ' + @ViewName + ' WHERE ' + @WhereColumn + ' = ' + @WhereValue)";
    }

    foreach($_POST['WhereClause'] as $where){
        echo $where['ColumnName'];
    }

    $form_search_parameters = array($column_names, array(&$_POST["ViewName"]), array(&$_POST["WhereClause"]));
}

我正在努力在 PHP 中返回 ColumnName、ColumnValue 和 Operator Key,因為我想將它們作為變量傳遞到參數化查詢中。 任何幫助將不勝感激,讓我走上正軌。

你的整個方式是引導你使用 GET 方法,但你使用 POST。

嘗試將 POST 更改為 GET,看看它是否有幫助,然后回到這里。

在你的 js 中試試這個:

FormSearchXMLHTTPRequest.open("GET", RootData + "global/search/search.php&" + FormSearchData , false);
FormSearchXMLHTTPRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
FormSearchXMLHTTPRequest.send();

並且在 php 中肯定將所有$_POST更改為$_GET

在設置var FormSearchData = ... ;后,也嘗試放置一個分號var FormSearchData = ... ;


要使用 POST,您最好將 FormSearchData 作為對象發送:

var FormSearchData = {
  "ColumnNames": ColumnNames,
  "ViewName": ViewName,
  "WhereClause": WhereClause,
  "FormSearchExecuted": 1
};

另外,使用var_dump($_POST)查看缺少的內容

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM