Использование AJAX для получения SQL-запроса WHERE в javascript


Я пытаюсь передать переменную javascript в SQL, ГДЕ запрос, и я продолжаю получать null в ответ.

При нажатии кнопки Нажатие кнопки выполняется функция:

<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, на которой выполняется запрос и возвращается в функцию ProcessData() для анализа и печати в консоли разработчика. Напечатанное значение показывает ноль.

Ниже приведено изображение того, что я пытаюсь получить из базы данных: enter image description here

Author: TevinTwoTimes, 2018-04-26

3 answers

1. Проверьте, правильно ли 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. Поэтому попробуйте использовать prepared statements из mysqli_* Или PDO.

 2
Author: Alive to Die, 2018-04-26 05:26:11

mysqli_query() требуется 1-й параметр в качестве объекта подключения.

$result3 = mysqli_query($conn,"SELECT itemName from images WHERE imgPath='$path'"); // pass your connection object here
 1
Author: B. Desai, 2018-04-26 05:08:29

Я думаю, что ваша проблема в том, что вы пытаетесь закодировать ресурс базы данных.

Попробуйте настроить свой 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
?>
 0
Author: Avenar, 2018-04-26 05:16:30