繁体   English   中英

无法从Key JSON MySQL PHP获取值

[英]Cannot get value from Key JSON MySQL PHP

我正在使用PHP从MySQL数据库中检索数据,并尝试使用JSON.stringify和JSON.parse创建对象。 它工作正常,但我无法获得关联的键/值。 只是整个对象。 我将其分为几部分。 这是PHP代码:

第一个PHP文件:

<?php
session_start();
include("web_db_operations.php");

if(isset($_POST['recipeId']) && isset($_SESSION['email'])){
    $recipeId = $_POST['recipeId'];
    $email = $_SESSION['email'];
}
else{
    echo "Did not work";
}
    $results = getAllMyRecipesAsList_recipeTable2($email, $recipeId);
    $_SESSION['recipeResults'] = $results;
    header('location:web_selected_recipe.php');
    exit();
?>

第二个PHP文件

 function getAllMyRecipesAsList_recipeTable2(string $email, int $recipeId){
    include 'config.php';
    $sql = 'SELECT * FROM recipeTable WHERE email = :email AND recipeId = :recipeId';
    $stmt = $conn->prepare($sql);       
    $stmt->bindParam(':email', $email, PDO::PARAM_STR);
    $stmt->bindParam(':recipeId', $recipeId, PDO::PARAM_STR);
    $stmt->execute();
    $getResults = $stmt->fetchAll(PDO::FETCH_ASSOC);
    $json = array();
    if(count($getResults) > 0){
        foreach($getResults as $row){
            $json[] = array('firstName' => $row['firstName'],
                           'lastName' => $row['lastName'],
                           'email' => $row['email'],
                           'recipeName' => $row['recipeName'],
                           'description' => $row['description'],
                           'ingredients' => $row['ingredients'],
                           'prepTime' => $row['prepTime'],
                           'steps' => $row['steps'],
                           'nutrition' => $row['nutrition'],
                           'servings' => $row['servings'],
                           'rating' => $row['rating'],
                           'tags' => $row['tags'],
                           'imagePath' => $row['imagePath'],
                           'imageName' => $row['imageName'],
                           'recipeId' => $row['recipeId']
                           );
         }
        $results = json_encode($json);
        return $results;
    }else{
        echo "no data found";
    }
    }

然后在我的JS文件中检索(这只是相关部分):

<script>
    <?php $results = $_SESSION['recipeResults'];
var results = <?php echo $results; ?>;
    var toString = JSON.stringify(results);
    console.log(toString);
    var parsed = JSON.parse(toString);
    console.log(parsed);
</script>

记录resultAsString会产生以下结果:

[{"firstName":"Marcus","lastName":"Holden","email":"marcus@gmail.com","recipeName":"Aloo Paratha","description":"","ingredients":"","prepTime":"25 Minutes","steps":"","nutrition":"","servings":"","rating":"","tags":"","imagePath":"../userRecipeImages","imageName":"9110164.jpg","recipeId":"1"}]

记录解析后的结果如下:

[{…}]
0:description:
"No Description", email "marcus@gmail.com", firstName:"Marcus", imageName:"9110164.jpg", imagePath:"../userRecipeImages", ingredients:"Some Ingredients",lastName:"Holden", nutrition:"Not given", prepTime:"25 Minutes", rating:"5/10", recipeId:"1", recipeName:"Aloo Paratha", servings: "6", steps:"Your Steps Here", tags:"It's bread"

现在,我尝试了所有步骤来获取与键关联的值...例如,我的对象在此处称为已解析...因此,我尝试了parsed.firstName ..返回undefined ...以及Object.keys(解析)。 我似乎找不到钥匙。 我想像数组一样使用它...设置如下内容:

element.innerHTML =已解析[2] ...等

我在这里想念什么?

我认为您的工作量超出了您的需要。 数据作为JSON编码的对象传给您。 只是使用它。

<script>
var results = <?php echo $_SESSION['recipeResults']; ?>;

var first_results = results[0]; // Each array member is one object from your result set
console.log( first_results.firstName );

console.log( results[0].firstName ); // OR specify which array index to interact directly
</script>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM