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