Member 13921342 Ответов: 1

У меня есть проблема в моем коде, потому что я хочу получить как родительскую категорию, так и дочернюю категорию одновременно, но это не сработало


Это раздел Загрузки продукта, где пользователь может выбрать категорию:
<p class="admin-estate-add-section-input">
   Parent category
 </p>
 
 <option value=""<?=(($parent == '')?' selected':'')?>>
 <?php while($p = mysqli_fetch_assoc($parentQuery)): ?>
 <option value="<?=$p['id'];?>"<?=(($parent == $p['id'])?' selected':'')?>><?=$p['category'];?>
 <?php endwhile; ?>
 
 <br>
 <br>
 <p class="admin-estate-add-section-input">
    Child category
 </p>
 
 <br>
 <br>


Это функция jQuery, которая вызывает child_categories.php файл

function get_child_options(selected){
 if(typeof selected === 'undefined'){
 var selected = '';
 }
 var parentID = jQuery('#parent').val();
 jQuery.ajax({
 url: '/tartalomkezelo/admin/parsers/child_categories.php',
 type: 'POST',
 data: {parentID : parentID, selected: selected},
 success: function(data){
 jQuery('#child').html(data);
 },
 error: function(){alert("Something went wrong! Can't select category.")},
 });

 }

 jQuery('select[name="parent"]').change(get_child_options);




Это и есть то самое child_categories.php файл:
<?php
require_once $_SERVER['DOCUMENT_ROOT'].'/tartalomkezelo/core/init.php';
$parentID = (int)$_POST['parentID'];
$selected = sanitize($_POST['selected']);
$childQuery = $db->query("SELECT * FROM categories WHERE parent = '$parentID' ORDER BY category");
ob_start(); ?>

 <?php while($child = mysqli_fetch_assoc($childQuery)): ?>
 <option value="<?=$child['id'];?>"<?=(($selected == $child['id'])?' selected':'');?>><?=$child['category'];?>
 <?php endwhile; ?>
<?php echo ob_get_clean(); ?>


А затем скрипт для загрузки файла продукта:

jQuery('document').ready(function(){
 get_child_options('&lt;?=$category;?>');
 });


Что я уже пробовал:

Я попытался извлечь данные из базы данных для редактирования, но данные дочерней категории не были извлечены одновременно с родительской категорией

1 Ответов

Рейтинг:
1

Patrice T

$childQuery = $db->query("SELECT * FROM categories WHERE parent = '$parentID' ORDER BY category");

Не решение вашего вопроса, а еще одна проблема, которая у вас есть.
Никогда не создавайте SQL-запрос путем объединения строк. Рано или поздно вы сделаете это с помощью пользовательских вводов, и это откроет дверь к уязвимости под названием "SQL-инъекция", она опасна для вашей базы данных и подвержена ошибкам.
Одна кавычка в имени - и ваша программа выйдет из строя. Если пользователь вводит имя, например "Брайан О'Коннер", может привести к сбою вашего приложения, это уязвимость SQL-инъекции, и сбой-это наименьшая из проблем, вредоносный пользовательский ввод, и он продвигается к командам SQL со всеми учетными данными.
SQL-инъекция - Википедия[^]
SQL-инъекция[^]
Атаки SQL-инъекций на примере[^]
PHP: SQL-инъекция - руководство пользователя[^]
Шпаргалка по предотвращению инъекций SQL - OWASP[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? - Обмен Стеками Информационной Безопасности[^]