Как ваш ajax получает. php файл должен выглядеть :
$validLiteratureIds = ['yourTable1', 'yourTable2'];
if (!isset($_GET['edit_literature_id'], $_GET['literatureID']) || !in_array($_GET['literatureID'], $validLiteratureIds)) {
$response = ['error' => 'Missing/Invalid Data Submitted'];
} else {
$conn = new mysqli('localhost', 'root', '', 'dbname');
$sql = "SELECT title, name, content
FROM `{$_GET['literatureID']}`
WHERE `id` = ?";
$stmt = $conn->prepare($sql);
$stmt->bind_param("s", $_GET['edit_literature_id']);
$stmt->execute();
$stmt->bind_result($title, $name, $content);
if (!$stmt->fetch()) {
$response = ['error' => 'No Record'];
} else {
$response = [
'title'=> $title,
'name' => 'data:image/jpeg;base64,' . base64_encode($name),
'content' => $content
];
}
}
echo json_encode($response);
Важные рекомендации:
- Подтвердите ввод пользователя, чтобы только подходящие материалы имеют право доступа к вашей базе данных.
- Записывайте результаты сбоев до результатов успеха последовательно во всем проекте, это облегчит чтение и отслеживание ваших сценариев.
- Всегда используйте подготовленные операторы и привязывайте предоставленные пользователем данные к заполнителям в вашем запросе для стабильности / безопасности.
- Имя таблицы не может быть связано как значение
id
; оно должно быть записано непосредственно в строку sql - поэтому очень важно, чтобы вы проверили значение по массиву идентификаторов литературы из белого списка. - Нет необходимости объявлять новые переменные для получения
$_GET
значения; просто получите доступ к значениям непосредственно из суперглобального массива. - Я собираюсь предположить, что ваш
id
является первичным / уникальным ключом в вашей таблице (таблицах), поэтому вам не нужно l oop за ваш набор результатов. Попытайтесь получить одну строку - она будет содержать данные или набор результатов будет пустым. - Вызовите
json_encode()
только один раз и в конце вашего сценария. - Не стоит очищать любые результаты или закрытие подготовленного оператора или соединения, потому что эти задачи автоматически выполняются, когда выполнение скрипта завершается в любом случае - избегайте вздутия скрипта.
Что касается вашего jquery скрипта:
$(document).ready(function () {
$(document).on('click', '#btnModalUpdate', function (e) {
e.preventDefault();
$.ajax({
type: 'GET',
url: '../../crud/read/view.php',
data: $('#modalFormUpdate').serialize(),
dataType: 'json',
success: function (response) {
if (response.hasOwnProperty('error')) {
console.log(response.error);
} else {
console.log(response.title, response.name, response.content);
}
}
});
});
});
- Я обрезал все несущественные строки
- изменил POST на GET - потому что вы просто читаете данные из базы данных, а не пишете
parseJSON()
не требуется - response
- готовый к использованию объект. - Я проверяю свойство
error
в объекте ответа, чтобы получить доступ к соответствующим данным.
Оба сценария выше не проверены (и полностью написаны с моего телефона). Если я сделал какие-либо опечатки, пожалуйста, оставьте мне комментарий, и я исправлю это.