簡體   English   中英

PHP While循環可搜索多個MySQL查詢

[英]PHP While loop to search through multiple MySQL queries

我試圖遍歷搜索到的標簽並收集與該標簽相關的所有帖子。 為此,我知道我將需要使用whileforeach循環。

該變量通過以下方式收集: $tag = trim($_GET['tag']);

然后,我將像這樣通過標簽表進行搜索:

  $stmt = $mysqli->prepare('SELECT post_id FROM tags WHERE tag = ?');
  $stmt->bind_param('s', $tag);
  $stmt->execute();
  $stmt->bind_result($post_id);
  $stmt->store_result();
  $rows = $stmt->num_rows;
  $stmt->fetch();
  $stmt->close();

在搜索所有帶有標簽的帖子(例如“行程”)時,這很可能會返回多行

然后,在收集了相關標記帖子的post_id之后,我搜索了帖子表以獲取有關該帖子的所有信息,然后再將其輸出給用戶:

  $stmt = $mysqli->prepare('SELECT title FROM posts WHERE id = ?');
  $stmt->bind_param('i', $post_id);
  $stmt->execute();
  $stmt->bind_result($title);
  $stmt->store_result();
  $rows_posts = $stmt->num_rows;
  $stmt->fetch();
  $stmt->close();

我的問題是,這僅適用於一篇文章,而且我不確定如何循環搜索,因此返回具有相同標簽的多篇文章。

您可以在第一個查詢中加入posts表。

SELECT posts.title FROM tags
JOIN posts ON posts.id = tags.post_id
WHERE tag = ?

您可以使用: foreach($stmt->get_result() as $row) {}

請了解mysql join的工作原理http://dev.mysql.com/doc/refman/5.0/en/join.html在您的示例中,正確的查詢為:

SELECT posts.title FROM tags join posts on posts.id = tags.post_id where tag = ?

您不再需要在php中連接數據了。

為什么不使用

SELECT title FROM posts P INNER JOIN tags T ON P.id = T.post_id WHERE tag = ?

這將導致指定標簽的標題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM