尝试查询数据库时未定义的索引PHP / MySQL

时间:2015-04-09 09:04:06

标签: php arrays

这个工作正常#1但是当我尝试在第二个表上关联其他表时,它会出错

注意:第30行的C:\ xampp \ htdocs \ hyukies \ public \ samples.php中的未定义索引:recipe.id

注意:未定义的索引:第31行的C:\ xampp \ htdocs \ hyukies \ public \ samples.php中的recipe.ingredientid RecipeID: IngredientID:

注意:第30行的C:\ xampp \ htdocs \ hyukies \ public \ samples.php中的未定义索引:recipe.id

注意:未定义的索引:第31行的C:\ xampp \ htdocs \ hyukies \ public \ samples.php中的recipe.ingredientid RecipeID: IngredientID:

注意:第30行的C:\ xampp \ htdocs \ hyukies \ public \ samples.php中的未定义索引:recipe.id

注意:未定义的索引:第31行的C:\ xampp \ htdocs \ hyukies \ public \ samples.php中的recipe.ingredientid RecipeID: 成分ID:

 <?php
 $sql = mysqli_query($connection, "SELECT id, location FROM location");
 $userinfo = array();
 while ($row_user = mysqli_fetch_assoc($sql))
  $userinfo[] = $row_user;
 foreach ($userinfo as $user) {
     echo "ID: {$user['id']}<br />"
    . "Location: {$user['location']}<br /><br />";
 }
 ?>

这个没有工作的错误问题请帮忙......

 <?php
 $sql_2 = mysqli_query($connection, "SELECT recipe.id, recipe.ingredientid, ingredients.id, ingredients.quantity, ingredients.`name` FROM recipe INNER JOIN ingredients ON ingredients.id = recipe.ingredientid");
 $userinfo_2 = array();
 while ($row_user_2 = mysqli_fetch_assoc($sql_2))
     $userinfo_2[] = $row_user_2;
 foreach ($userinfo_2 as $user_2) {
     echo "RecipeID: {$user_2['recipe.id']}<br />"
     . "IngredientID: {$user_2['recipe.ingredientid']}<br /><br />";
 }
 ?>

3 个答案:

答案 0 :(得分:0)

关联数组中的键只包含列名,而不包含表名。所以它应该是:

 echo "RecipeID: {$user_2['id']}<br />"
 . "IngredientID: {$user_2['ingredientid']}<br /><br />";

答案 1 :(得分:0)

从&#39;名称&#39;删除后面的刻度线在您的查询中

$sql_2 = mysqli_query($connection, "SELECT recipe.id, recipe.ingredientid, ingredients.id, ingredients.quantity, ingredients.`name` FROM recipe INNER JOIN ingredients ON ingredients.id = recipe.ingredientid");

应该是

$sql_2 = mysqli_query($connection, "SELECT recipe.id, recipe.ingredientid, ingredients.id, ingredients.quantity, ingredients.name FROM recipe INNER JOIN ingredients ON ingredients.id = recipe.ingredientid");

另外,删除&#39;配方&#39;来自$user_2['recipe.id']。它应该是$user2['id'],但不清楚你得到的是哪个ID。要单独选择它们,您可以使用&#39; AS&#39;在您的查询中为他们提供唯一标识符。

 SELECT recipe.id AS id1, ingedients.id AS id2

答案 2 :(得分:0)

表名不包含在结果集中,因此列仅命名为idingredientid等。您确实应该使用as来命名它们,例如{{1 }}。没有关于recipe.id as recipeid字段的警告,PHP会将它们映射到一起。

你真的不需要两个id字段,因为你也有成分,但很可能你会在id字段得到ingredients.id,因为它是后者。

因此请将您的查询更新为

id

然后使用recipeid获取recipe.id。这总是会更好,因为很清楚你得到的是什么。