簡體   English   中英

如何使用PHP和Mysql從數據庫中獲取數據來比較某些值

[英]How to fetch data from database comparing some value using PHP and Mysql

我有一些疑問。 實際上我需要通過使用PHP和MySQL連接兩個表來按列值獲取數據。我正在解釋下面的表格。

db_specials:

id        special                  type

1        Food and Beverage          1

2        Liquor                     2

db_basic:

 id      special_id     name

 1         2            aaa

 2         1            Raj

 3         2            Ram

 4         2            Jay

 5         1            Nikesh

在這里,我需要從表格db_basic獲取所有數據,這些數據與第一個表格中的Liquor相關聯。 我在下面解釋我的代碼。

$res=mysqli_query($connect,"select b.id,b.special_id,b.name,s.type from db_basic as b inner join db_specials as s on b.special_id=s.id where b.special_id=2 order by b.id desc");

while($row=mysqli_fetch_array($res)){
   $data[]=$row;
}

我也得到了正確的數據。 這里的問題是db_specials還在前端有insert的刪除功能。 假設用戶在db_specials表中刪除了id=2的行並再次插入,在這種情況下, id將更改為2到3.因此查詢也需要相應地更改。 在這里,我需要知道什么是最好的邏輯,以便每次用戶不會更改查詢,如果任何特殊項被刪除並再次插入。 請幫我。

您應該依賴於db_specials表的type列,而不是id列,因為它不會為每個INSERT操作自動遞增。 所以你的查詢應該是這樣的:

select b.id,b.special_id,b.name,s.type 
from db_basic as b 
inner join db_specials as s 
on b.special_id=s.type 
where b.special_id=2 
order by b.id desc

另外,我建議你應該將db_basic表的special_id列名更改為type ,如下所示:

+------+------+------+
|  id  | type | name |
+------+------+------+
|      |      |      |

這樣,構建查詢會更容易,如下所示:

select b.id,b.type,b.name
from db_basic as b 
inner join db_specials as s 
on b.type=s.type 
where b.type=2 
order by b.id desc

如果用戶在db_specials中刪除2,Liquor,2並重新插入,則無法控制用戶在前端輸入的內容。
用戶可能會插入食物,2

不要使用db_basic連接db_specials類型列, 應該在前端放置一個檢查,當用戶單擊刪除按鈕時,在表db_specials中刪除2,Liquor,2之前提示消息,如果有任何special_id = 2在表db_basic中 ,相應的行也將被刪除。

暫無
暫無

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

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