Я создаю веб-приложение с функцией, позволяющей пользователю проверять книгу из базы данных библиотеки, если они отвечают требованиям (нет просроченных книг, книги доступны и т.д.).
Эта проблема
Когда getBook.php вызывается JS, он подключается к моей базе данных и отправляет довольно простой запрос: "получить название книги с этим идентификатором". При вызове в MySQL Workbench он возвращает соответствующий заголовок. Однако при вызове из функции JS браузера запрос возвращает пустой результат.
Что я пробовал
Для простоты я исключил все причудливые средства проверки ошибок и создания jquery, и только что мой JS повторил мне, что он получил от php.
Я также посмотрел на Stackoverflow SyntaxError: missing] после списка элементов, когда пытаюсь передать параметр объекта в вопрос функции onclick, но это тоже не помогло.
Я peppered getBook.php с функциями die(), но каждая функция die, которую я использовал, только что подтвердила, что скрипт работает так, как будто я хочу его, за исключением одного: когда я использую этот оператор sql в MySQL Workshop, я получаю название книги Я хочу в результате. Когда getBook.php вызывается из браузера, он получает следующее:
{ "Current_field": NULL, "field_count": NULL, "длина": NULL, "num_rows": NULL, "тип": NULL}
Соответствующий JavaScript
function checkout(isbnNo=1, userID=1) {
$.ajax({
type: "POST",
url: "php/checkout.php",
dataType: "text",
// @TODO: add scanner functionality to populate isbn,
// add functionality to populate user
data:
{
isbn: isbnNo,
user: userID
},
success: function(result) {
// change #button-text to house result (for now)
// @TODO: delete errorcheck when done
$('#button-text').html(result);
console.log(result);
},
error: function(xhr, status, error) {
alert(status + ' ||| ' + error);
}
});
}
// extraneous functions...
// THIS FUNCTION RIGHT HERE. VVVVVVVVV
function getBook(bookID=1, userNo=1) {
$.ajax({
type: "POST",
url: "php/getBook.php",
data: {
book: bookID,
user: userNo
},
dataType: "text",
success: function(result) {
$("#button-text").html(result);
console.log(result);
}
})
}
getBook.php
<?php
require("utility.php");
if($_SERVER["REQUEST_METHOD"]=="POST") {
$book = (int)cleanInput($_POST["book"]); // from string to int
logIntoDataBase($dbconn, "../docs/server-info-sr.txt");
$query = " SELECT
title
FROM
books
WHERE
isbn = $book;";
$result = $dbconn->query($query);
if ($result)
echo json_encode($result);
else
echo "ERROR: unsuccessful query";
//disconnect when finished
disconnectDB($dbconn,$dbName);
}
?>
(cleanInput(), для всех, кто интересуется)
function cleanInput($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
$data = htmlentities($data);
return $data;
}
Ответьте на кредит @TimMorton Tim Morton за мягкое напоминание мне, что мне нужно использовать fetch_assoc для извлечения строки из моих возвращенных запросов в PHP:
$query = " SELECT
b.title, b.isbn
FROM
books b
WHERE
b.isbn = $book;";
$myArray = array();
$result = $dbconn->query($query);
if ($result) {
// vvvvv the while loop with the fetch_assoc fixed everything
while($row = $result->fetch_assoc()) {
$myArray[] = $row;
}
echo json_encode($myArray[0]);
}
$book
?