使用 AJAX 获取 SQL WHERE 查询 javascript

Using AJAX to get an SQL WHERE query into javascript

我试图将一个 javascript 变量传递给一个 SQL WHERE 查询,但我一直在 return 中得到 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。该 path 变量被发送到 theAjax() 函数,然后它被传递给 info.php 页。在 info.php 页面中,SQL WHERE 查询是 运行 并且 returned 到 processData() 要在开发者控制台中解析和打印的函数。打印出来的值显示null.

下面是我试图从数据库中获取的图片:

我认为您的问题是您正在尝试对数据库资源进行编码。

尝试将您的 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
?>

1.Check path 对不对?您可以使用 console.log(path); 检查 jquery 内部或使用 print_r($_POST['path']);

在 PHP 结束时检查

2.Your 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开放。所以尝试使用 prepared statements of mysqli_* 或者 PDO.

mysqli_query() 需要第一个参数作为连接对象。

$result3 = mysqli_query($conn,"SELECT itemName from images WHERE imgPath='$path'"); // pass your connection object here