Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 试图理解mysqli,需要一个数组,其中一列作为键,一列作为值_Php_Mysql_Arrays_Mysqli - Fatal编程技术网

Php 试图理解mysqli,需要一个数组,其中一列作为键,一列作为值

Php 试图理解mysqli,需要一个数组,其中一列作为键,一列作为值,php,mysql,arrays,mysqli,Php,Mysql,Arrays,Mysqli,好的,我的问题是我有一个包含帖子的表,每个帖子都有一个类别id,但没有类别名称。我有另一个类别id表和类别名称。因此,我想循环浏览帖子,并回显类别名称。我想我应该在while循环中加入另一个mysqli查询 while($row_post = mysqli_fetch_array($result_post)){ query_post_cat = "SELECT category_name FROM categories WHERE category_id = " . $row_post["ca

好的,我的问题是我有一个包含帖子的表,每个帖子都有一个类别id,但没有类别名称。我有另一个类别id表和类别名称。因此,我想循环浏览帖子,并回显类别名称。我想我应该在while循环中加入另一个mysqli查询

while($row_post = mysqli_fetch_array($result_post)){

query_post_cat = "SELECT category_name FROM categories WHERE category_id = " . $row_post["category_id"];
result_post_cat = mysqli_query($link, $query_post_cat);
$category_name = something here not sure

 echo $row_post["post_title"] . $category_name;
}
我不知道该怎么办。我认为的另一种方法是在while循环之外创建category表,并以某种方式创建一个assoc数组,其中cat id作为键,cat name作为值,然后进行echo

category_name[$row_post["category_id"]]
while循环中的etc

除此之外,我很确定我使用mysqli的方式并不理想,当我看到其他人的代码时,他们似乎经常使用->对象操作符,我不知道这是什么,也不知道它是如何工作的,也找不到任何关于它的信息。正如你所看到的,我很迷路


感谢您的帮助

如果使用联接运行查询,您可以同时从两个表中获取数据,如下所示:

SELECT post_table.*, categories.category_name FROM post_table INNER JOIN categories ON post_table.category_id = categories.category_id;

您可以在以下位置查看更多信息:

如果使用联接运行查询,则可以同时从两个表中获取数据,如下所示:

SELECT post_table.*, categories.category_name FROM post_table INNER JOIN categories ON post_table.category_id = categories.category_id;

您可以在以下网址查看更多信息:

您的代码应如下所示:-

while($row_post = mysqli_fetch_array($result_post)){
  // missed $ below line
  $query_post_cat = "SELECT category_name FROM categories WHERE category_id = {$row_post['category_id']}";
  $result_post_cat = mysqli_query($link, $query_post_cat);
  // use mysqli_fetch_row below
  $category_name = mysqli_fetch_row($result_post_cat));

  echo $row_post["post_title"] . $category_name;
}

更好的方法是在查询中使用mysql,以单次快照的方式获取所需的记录。

您的代码应如下所示:-

while($row_post = mysqli_fetch_array($result_post)){
  // missed $ below line
  $query_post_cat = "SELECT category_name FROM categories WHERE category_id = {$row_post['category_id']}";
  $result_post_cat = mysqli_query($link, $query_post_cat);
  // use mysqli_fetch_row below
  $category_name = mysqli_fetch_row($result_post_cat));

  echo $row_post["post_title"] . $category_name;
}

更好的方法是在查询中使用mysql以单次快照的方式获取所需的记录。

1)变量名为的$2)您应该在$row mysqli_fetch_row($result_post_cat))时写入;警告:使用
mysqli
时,您应该使用和将用户数据添加到查询中。不要使用字符串插值或串联来完成此操作,因为您已经创建了严重的错误。永远不要将
$\u POST
$\u GET
数据直接放入查询中,如果有人试图利用您的错误,这可能是非常有害的。
我只会在while循环中放入另一个mysqli查询
从来都不是好主意。对于mysqli,使用->操作符,这只是一种不同的风格:OOP(面向对象编程)vs程序风格。您可以在以下位置阅读更多信息:1)您错过了变量名为的$2)您应该在$row mysqli_fetch_row($result_post_cat))时编写;警告:使用
mysqli
时,您应该使用和将用户数据添加到查询中。不要使用字符串插值或串联来完成此操作,因为您已经创建了严重的错误。永远不要将
$\u POST
$\u GET
数据直接放入查询中,如果有人试图利用您的错误,这可能是非常有害的。
我只会在while循环中放入另一个mysqli查询
从来都不是好主意。对于mysqli,使用->操作符,这只是一种不同的风格:OOP(面向对象编程)vs程序风格。您可以在网站上阅读更多关于这两个方面的信息