Использование 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() для анализа и печати в консоли разработчика. Напечатанное значение показывает ноль.
Ниже приведено изображение того, что я пытаюсь получить из базы данных:
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
.
mysqli_query()
требуется 1-й параметр в качестве объекта подключения.
$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
?>