Использование AJAX для получения запроса SQL WHERE в JavaScript - PullRequest
0 голосов
/ 26 апреля 2018

Я пытаюсь передать переменную javascript в запрос SQL WHERE, и в ответ получаю нулевое значение.

При нажатии кнопки запускается функция 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 file:

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

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

Ответы [ 3 ]

0 голосов
/ 26 апреля 2018

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.

0 голосов
/ 26 апреля 2018

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

$result3 = mysqli_query($conn,"SELECT itemName from images WHERE imgPath='$path'"); // pass your connection object here
0 голосов
/ 26 апреля 2018

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

Попробуйте настроить свой 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
?>
...