[英]PHP While loop to search through multiple MySQL queries
我試圖遍歷搜索到的標簽並收集與該標簽相關的所有帖子。 為此,我知道我將需要使用while
或foreach
循環。
該變量通過以下方式收集: $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.