[英]Using AJAX to get an SQL WHERE query into javascript
我試圖將javascript變量傳遞到SQL WHERE查詢中,但我不斷得到null。
單擊按鈕后,將運行buttonClick函數:
<script>
var var1;
function buttonClick(elem){
var1 = elem.src //this gets the url from the element
var path = var1.slice(48); //this cuts the url to img/art/9/1.jpg
ajax = theAjax(path);
ajax.done(processData);
ajax.fail(function(){alert("Failure");});
}
function theAjax(path){
return $.ajax({
url: 'info.php',
type: 'POST',
data: {path: path},
});
}
function processData(response_in){
var response = JSON.parse(response_in);
console.log(response);
}
</script>
這是存儲在info.php文件中的代碼:
<?php
$path = $_POST['path'];
$result3 = mysqli_query("SELECT itemName from images WHERE imgPath='$path'");
$json = json_encode($result3);
echo $json
?>
如您所見,單擊按鈕后,將運行buttonClick()函數,並且變量存儲圖像路徑或src。 該路徑變量將發送到theAjax()函數,並在該函數中傳遞給info.php頁面。 在info.php頁面中,運行SQL WHERE查詢並返回到processData()函數以在開發人員控制台中進行解析和打印。 打印的值顯示為null 。
1.檢查path
是否正確? 您可以使用console.log(path);
檢查jquery內部console.log(path);
或在PHP結束時使用print_r($_POST['path']);
2.您的Php代碼缺少連接對象以及記錄獲取代碼。
<?php
if(isset($_POST['path'])){
$path = $_POST['path'];
$conn = mysqli_connect ('provide hostname here','provide username here','provide password here','provide dbname here') or die(mysqli_connect_error());
$result3 = mysqli_query($conn,"SELECT itemName from images WHERE imgPath='$path'");
$result = []; //create an array
while($row = mysqli_fetch_assoc($result3)) {
$result[] = $row; //assign records to array
}
$json = json_encode($result); //encode response
echo $json; //send response to ajax
}
?>
注意:-此PHP查詢代碼對於SQL INJECTION
是完全開放的。 因此,請嘗試使用mysqli_*
或PDO
prepared statements
。
mysqli_query()
需要第一個參數作為連接對象。
$result3 = mysqli_query($conn,"SELECT itemName from images WHERE imgPath='$path'"); // pass your connection object here
我認為您的問題是您正在嘗試對數據庫資源進行編碼。
嘗試將PHP調整為如下所示:
<?php
$path = $_POST['path'];
$result3 = mysqli_query("SELECT itemName from images WHERE imgPath='$path'");
$return_data = [];
while($row = mysqli_fetch_assoc($result3)) {
$return_data[] = $row;
}
$json = json_encode($return_data);
echo $json
?>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.