2015-12-21 195 views
0

任何幫助將不勝感激。PHP將變量傳遞給另一頁

我有2頁 1. products.php 2. product_mysql.php 我想從products.php傳遞一個變量來product_mysql.php和products.php

我返回結果在「product_mysql.php?partNo = 12807」上得到正確的結果,但我需要在products.php?partNo = 12807上。

如果我在SELECT查詢中將partNo硬編碼爲「12807」,它會在products.php上返回正確的結果。

product_mysql.php

<?php 
header("Access-Control-Allow-Origin: *"); 
header("Content-Type: application/json; charset=UTF-8"); 


$conn = new mysqli("localhost", "root", "root", "prod_db"); 

if (mysqli_connect_errno()) { 
    exit('Connect failed: '. mysqli_connect_error()); 
} 

$partNoid = $_GET['partNo']; 
$result = $conn->query("SELECT partNo, productName, unitPrice FROM  tblProducts WHERE partNo=$partNoid"); 


$outp = "["; 
while($rs = $result->fetch_array(MYSQLI_ASSOC)) { 
    if ($outp != "[") {$outp .= ",";} 
    $outp .= '{"PartNo":"' . $rs["partNo"] . '",'; 
    $outp .= '"productName":"' . $rs["productName"] . '",'; 
    $outp .= '"unitPrice":"'. $rs["unitPrice"] . '"}'; 
} 
$outp .="]"; 

$conn->close(); 

echo($outp); 
?> 

products.php

<h1>Customers</h1> 
<div id="id01"></div> 

<script> 
var xmlhttp = new XMLHttpRequest(); 
var url = "product_mysql.php"; 

xmlhttp.onreadystatechange=function() { 
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
     myFunction(xmlhttp.responseText); 
    } 
} 
xmlhttp.open("GET", url, true); 
xmlhttp.send(); 

function myFunction(response) { 
    var arr = JSON.parse(response); 
    var i; 
    var out = "<table>"; 

    for(i = 0; i < arr.length; i++) { 
     out += "<tr><td>" + 
     arr[i].PartNo + 
     "</td><td>" + 
     arr[i].productName + 
     "</td><td>" + 
     arr[i].unitPrice + 
     "</td></tr>"; 
    } 
    out += "</table>"; 
    document.getElementById("id01").innerHTML = out; 
} 
</script> 

</body> 
</html> 
+1

我希望這不是一個生產網站。您將數據庫**全部打開**到SQL注入。 – Darren

+0

嗨達倫,沒有它的不生產,作爲一個新手任何幫助保護將是有益的。我能做些什麼來解決? 供參考。這個代碼是直接從w3schools網站,所以這是令人失望的。 – James

+0

您最好閱讀「PDO」或Mysqli Prepared Statements。此外,避免w3schools,閱讀[w3fools.com](http://www.w3fools.com) – Darren

回答

0

這可能是因爲的$_GET['partNo']類型不匹配爲int,所以你需要添加一個函數intval() (意思是將值明確解析爲int

$partNoid = intval($_GET['partNo']); 

它不僅可以保護傳入的非數字值,還可以保持程序的完整性。

而且您可能需要先檢查是否$_GET['partNo']先連接並稍後從數據庫中提取。

希望它可以幫助你;)

+0

感謝卡利,但它沒有工作,任何其他解決方案? – James