簡體   English   中英

MYSQL聯合PHP選擇到一個結果列

[英]MYSQL union PHP select into one result column

好的,當您使用Google搜索時,盯着SQL是唯一的選擇。 我對此不太了解。 我正在嘗試做的就是簡單地使用1個查詢一次搜索多個表並返回找到的內容。 我想我只需要對此做單獨的查詢,但是想看看是否有更好的方法。

因此,例如,有一個類別表和一個用戶表。 如果用戶搜索“ jo”,則它可能在類別表中找到“工作”,但也應該在用戶表中找到“ joe”。 這些以固定長度的<ul><li> html樣式顯示。 有一種查詢方法嗎? 理想情況下,如果在類別表中找到“工作”,則該記錄將結束,下一條記錄將包含來自用戶表的“ joe”(前提是“ jo”在類別表中沒有多個類別)。

我玩過UNION SELECT ,但是不確定它是否可以這種方式執行。 我也許可以從查詢中獲得結果,但是由於表中有多個在搜索的字段名,因此我需要能夠根據其來源返回結果。

例如,類似:

SELECT cat_name as result FROM categories WHERE cat_name LIKE '%$name%' 
UNION (SELECT firstname as result, lastname as result, username as result WHERE 
firstname LIKE '%$name%' OR lastname LIKE '%$name%' OR username LIKE '%$name%' LIMIT 10

<?php echo $row['result']; ?>

您是否需要多個查詢?

我看不到使用多個查詢和使用echo單獨顯示結果以免造成混淆(因此您知道結果從何而來)沒有任何危害。

這樣的事情無論如何都不會加重您的腳本,並使它更易於閱讀。

<?php
$con=mysqli_connect("example.com","peter","abc123","my_db");
// Check connection
if (mysqli_connect_errno()) {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$sql = "SELECT cat_name FROM categories WHERE cat_name LIKE '%$name%';";
$result = mysqli_query($con,$sql);

echo "<h1>Category Matches</h1>"
echo "<ul>";
while($row = mysqli_fetch_array($result)) {
  echo "<li>" . $row['cat_name'] . "</li>";
}
echo "</ul>";

$sql2 = "SELECT * FROM users WHERE first_name LIKE '%$name%';";
$result2 = mysqli_query($con,$sql);

echo "<h1>User Matches</h1>"
echo "<ul>";
while($row = mysqli_fetch_array($result2)) {
  echo "<li>" . $row['first_name'] . "</li>";
}
echo "</ul>";

mysqli_close($con);
?> 

暫無
暫無

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

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