簡體   English   中英

在多個SQL表中選擇一個名稱

[英]Select a name in multiple sql table

我想從多個SQL表中搜索產品詳細信息。 我使用了這些無效的查詢。 我找到了許多有關該主題的帖子,但我無法應用其中任何一個。

每個表都具有相同的結構(我在這個類別中有14個表)

id | name | cast | detail | date

我試過了:

方法1:

$result = mysqli_query($db,"SELECT movie.*, audio.* 
  FROM movie,audio WHERE movie.name='$name' OR audio.name='$name'");

方法2:

$result = mysqli_query($db,"SELECT * 
  FROM movie,audio WHERE movie.name='$name' OR audio.name='$name'");

方法3:

$result = mysqli_query($db,"SELECT * FROM movie,audio WHERE name='$name'");

請注意,信譽確實是Giorgos在頂部的評論,我只是將其正式化。

假設所有表都完美地對齊,並且您只是想在所有表中查找帶有name東西,那么您的第三次嘗試實際上已經結束。

SQL應該是

SELECT *
FROM movie
    UNION audio
WHERE name='$name'

只需鏈接UNION直到您合並了所有表格。

唯一要注意的是,這些列將按照Movie擁有它們的方式進行標記,並且如果表之間存在任何結構差異,您會感到很奇怪,而不是想要的結果。

在這種情況下,訣竅是將UNIONSELECT而不是像這樣在FROM內:

SELECT *
FROM movie
WHERE name='$name'
UNION
SELECT *
FROM audio
WHERE name='$name'

如果SQL風格不喜歡該設置,只需將其包裝在SELECT * FROM ( ... )

旁注,直接將變量插入SQL可能會導致SQL注入風險。 如果$name不是100%由服務器控制的,則可能需要調查切換到參數化查詢的過程,可能使用存儲過程。

或者只是清理變量。 那也行。 在進行參數化之前,以這種方式可以阻止注入。

暫無
暫無

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

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