[英]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.