2013-05-19 82 views
0

我想了解如何從PHP獲取URL參數。 所以我的代碼有點阿賈克斯開始射擊的PHP和警報與反應:使用PHP獲取Mysqli數據庫搜索的URL參數

$.ajax({          
    url: 'blog/assets/php/load-blog.php', 
    dataType: 'json',  
    success: function(data){ 
    alert(data); 
    } 
    }); 

然後,我有我的PHP:

<?php 
    //==== CONNECTION VARIABLE 
    $con = new mysqli($host,$user,$pass,$database); 


    //==== GET URL PARAMETER 
    $urlParam = $_GET["date"]; 


    //==== FETCH DATA 
    $result = $con->query("SELECT * FROM $table WHERE DATE = '$urlParam'"); 


    //==== CREATE ARRAY 
    $blogArray = array(); 
    while ($row = $result->fetch_row()) { 
    $blogArray[] = $row; 
    } 


    //==== ECHO AS JSON 
    echo json_encode($blogArray); 
?> 

的URL會是這個樣子:

http://www.mysite.com/blog/?date=2013-05-14 

所有這一切的問題是沒有正確選擇URL參數,但我不知道我做錯了什麼。

+0

您的查詢很容易受到SQL注入。改用[參數化查詢](http://bobby-tables.com/php.html)。你做了一個'echo $ _GET [「date」]'? –

+0

您的查詢中不存在'$ table' – antoox

+0

@antoox出於明顯的安全原因,我刪除了連接變量,例如主機,用戶,密碼和表格等代碼片段。我遇到的問題是將URL參數作爲變量。 – Coop

回答

2

的Javascript

var date = '2013-05-14'; 

$.ajax({   
    type: "GET",        
    url: 'blog/assets/php/load-blog.php', 
    dataType: 'json', 
    data: { date: date } 
    success: function(data){ 
    alert(data); 
    } 
}); 

PHP

<?php 
//==== CONNECTION VARIABLE 
$con = new mysqli($host,$user,$pass,$database); 


//==== GET URL PARAMETER 
$urlParam = $_GET["date"]; 

//==== PREPARED STATEMENT 
$stmt = $con->prepare("SELECT id,name FROM __TABLE_NAME__ WHERE date = ?"); 
$stmt->bind_param("s", $urlParam); 
$stmt->execute(); 
$stmt->bind_result($id, $name); 

//==== CREATE ARRAY 
$blogArray = array(); 

//==== FETCH DATA 
while ($stmt->fetch()) { 
    $blogArray[] = array(
    'id' => $id, 
    'name' => $name 
    ); 
} 

//==== CLOSE STATEMENT 
$stmt->close(); 

//==== ECHO AS JSON 
echo json_encode($blogArray); 
?> 
+0

對不起,我是Ajax和PHP的新手,所以不太瞭解它。但是,這種方法不會拉入所有的數據庫結果,然後用Ajax進行搜索嗎?我只想Mysqli查詢處理拉動正確的行。 – Coop

+0

爲什麼選擇POST?沒有數據改變,所以它是冪等的。 –

+0

@Coop你需要發送日期與Ajax首先添加一個回聲看,你發送日期或不 –