2017-05-02 73 views
3

我在調用我用於循環的數據庫時遇到了問題。查詢用於循環的數據庫

數據庫查詢1

SELECT id,qtyslot FROM rack WHERE theid = '1' 

id = 2qtyslot = 12

我們創建循環

for ($x = 1; $x <= 12; $x++) { 

這裏我所說的數據庫與插槽的身份變化 1或2 ,4(用2到4個逗號分隔)等等。

如何選擇

SELECT * FROM books WHERE idrack = '2' AND slot"......." // $x 

數據庫結構如下。

 
----------------------- 
| id | slot | name | 
----------------------- 
| 1 | 1  | name | 
----------------------- 
| 2 | 2,4 | name | --> How to define this with the above loop ($x) 
----------------------- 
| 3 | 5,6 | name | --> How to define this with the above loop ($x) 
----------------------- 
| 4 | 7  | name | 
----------------------- 

,並在表

結果這樣
 
----------------------------------------- 
| loop qtyslot | In slot  | remark | 
----------------------------------------- 
| 1   | name slot 1 | remark | 
----------------------------------------- 
| 2   |    |  | 
---------------|    |  | 
| 3   | Name slot 2,4 | remark | 
---------------|    |  | 
| 4   |    |  | 
----------------------------------------- 
| 5   | Name in  |  | 
---------------| slot 5,6 | remark| 
| 6   |    |  | 
------------------------------------------ 
etc up to 12 

誰能幫我。

+0

首先使用'strpos'來檢測字符串中是否有逗號,然後是'explode'。如果我們有逗號,這將會完成。否則繼續正常的迭代。或者你可以使用mysql的'IN'運算符,然後'implode' – Akintunde007

+0

謝謝@Akin。但是對於插槽列,它是從 - 到的值,而不是默認值。 2.4位於LOOP 2,LOOP 3和LOOP 4的示例。但部分插槽僅爲1. – Haidarpesebe

回答

1

你可以在mysql中使用SUBSTRING_INDEX函數。 試試這個:

SELECT * FROM books WHERE idrack = '2' AND $x BETWEEN SUBSTRING_INDEX(slot, ',', 1) and SUBSTRING_INDEX(slot, ',', -1) 
+0

但是對於插槽列,其值爲 - 而不是默認值。例如2.4是插槽2,3和4.結果將如上表所示,例如插槽2.4將從2,3和4插入。 感謝您的關注 – Haidarpesebe

+0

@Haidarpesebe看到更新 –

+0

我試過了,結果是合適的。非常感謝你。它非常石化一次。再次感謝。但如果你不介意的話,請幫助我如何使插槽名間隔,如果使用表​​命令rowspan = 3這個結果2.4(3插槽)。請幫忙。像上面的表一樣。 – Haidarpesebe