簡體   English   中英

使用AJAX將SQL WHERE查詢獲取到javascript中

[英]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.

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