Php и MySQL читают данные из нескольких таблиц - PullRequest
0 голосов
/ 24 октября 2018

Что не так с этим кодом.Я получил 3 таблицы, из которых я пытаюсь получить данные.Таблица рецептов, таблица ингредиентов и таблица рецептов.Recipeinredient содержит идентификаторы для рецепта и ингредиент для рецепта.До сих пор я могу отображать данные из рецепта и таблицы рецептов.Сейчас я пытаюсь получить данные из таблицы ингредиентов.

$id = $_GET['id'] ?? ''; //PHP > 7.0
$recipe_id = $id;   
$recipe = find_recipe_by_id($id);
$recipeingredient_set = find_all_recipeingredient_by_recipe_id($recipe_id);

while($recipeingredient = mysqli_fetch_assoc($recipeingredient_set)){
        $ingredient = find_ingredient_by_id($recipeingredient['ingredient_id']);
            echo "<br />    ";
            echo $ingredient['name'];   
            echo "<br />    ";

    } 
    function find_ingredient_by_id($id){
    global $db;

    $sql = "SELECT * FROM Ingredient ";
    $sql .= "WHERE id='" . $id . "'";
    $result = mysqli_query($db, $sql);
    confirm_result_set($result);
    $ingredient = mysqli_fetch_assoc($result);

    return $result; // returns an assoc. array

}
function find_all_recipeingredient_by_recipe_id($recipe_id){
    global $db;

    $sql = "SELECT * FROM RecipeIngredient ";
    $sql .= "WHERE recipe_id='" . $recipe_id . "'";
    $result = mysqli_query($db, $sql);
    confirm_result_set($result);
    return $result;
}   

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

Вы возвращаете набор результатов return $result; // returns an assoc. array, но вы должны возвращать ассоциированный массив $ingredient

    function find_ingredient_by_id($id){
        global $db;

        $sql = "SELECT * FROM Ingredient ";
        $sql .= "WHERE id='" . $id . "'";
        $result = mysqli_query($db, $sql);             //The resultset. This is what you were returning.
        confirm_result_set($result);
        $ingredient = mysqli_fetch_assoc($result);     //An assoc array. What you wanted to return.

        return $ingredient; // returns an assoc. array

    }
0 голосов
/ 24 октября 2018

вы возвращаете результат, а не массив, просто обновите строку возврата

 function find_ingredient_by_id($id){
global $db;

$sql = "SELECT * FROM Ingredient ";
$sql .= "WHERE id='" . $id . "'";
$result = mysqli_query($db, $sql);
confirm_result_set($result);
$ingredient = mysqli_fetch_assoc($result);

return $ingredient; // returns an assoc. array
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...