我有一個MySQL數據庫像查找mysql數據庫一行到字符串數組PHP
Id | What | Name
------------
0 | fruit | apple
1 | fruit | banana
2 | fruit | orange
3 | vegetable | onion
4 | vegetable | bean
...
我查詢一個網站,我解析響應到一個數組:
$response = array(
0 => 'Apple is a very good fruit',
1 => 'I like vegetables, onion is my favorite',
2 => 'I eat an orange every morning, fruit i good for your health'
3 => 'I hate vegetables',
4 => 'I love banana!'
)
我想匹配用正確的行到數據庫中的數組中的每個字符串,在這種情況下,這將是:
$response_matched = (
0 => Array('id' => 0, 'what' => 'fruit', 'name' => 'apple'),
1 => Array('id' => 1, 'what' => 'vegetable', 'name' => 'onion'),
2 => Array('id' => 2, 'what' => 'fruit', 'name' => 'orange'),
3 => Array('id' => -1, 'what' => 'vegetable', 'name' => 'undefined'),
4 => Array('id' => 4, 'what' => 'fruit', 'name' => 'apple')
)
如果只有「什麼」柱墊ch,然後返回。我也有一個單獨的表,只有哪一列。現在 ,我使用MySQL的正則表達式:
"SELECT * FROM table WHERE '$string' REGEXP what AND '$string' REGEXP name LIMIT 1"
這實際上工作(不正確如果只是「什麼」或「名字」匹配,但這是不太重要的),但我的網站變得很慢,因爲我每次必須同時運行約15個這樣的搜索,並且對於每個腳本來說,字符串數組的大小約爲15個條目,因此總共大約225個匹配(和查詢)在同一時間,數據庫大小約爲1200行... 我的想法是獲取腳本開始處的所有行(「SELECT * FROM table」),然後循環結果和每個循環,我循環字符串數組,如果匹配,我得到一個結果。這對於數據庫來說會少一些問題,因爲每個腳本只有一個查詢,但是我仍然會在15 * 1100的循環中循環,這對服務器來說是相當有用的... 最後一個想法是獲取存儲在像
$rows = array('fruit' => array(row0,row1,row2), 'vegetable'=>(row3,row4));
一個多維陣列。然後循環的行以匹配密鑰(「果實」,「蔬菜」),並且如果它接着匹配我回路陣列(果匹配,因此我環ROW0,ROW1,ROW2 ) 對於如何獲得我想要的結果,您有不同的想法嗎?一種更有效的匹配方式? 我也想將查詢結果存儲到內存中,這樣我就可以在腳本之間獲得它(當我同時運行腳本15次時,我希望能夠通過單個mysql查詢來獲得結果並在腳本之間共享)。我怎樣才能做到這一點?我正在尋找MySQL查詢緩存...還有什麼? 非常感謝您
我的英語不好,其實你不明白我在找什麼。我想與數據庫匹配的字符串數組是網站http調用的結果,可能會改變,我無法控制它。匹配可以發生在同一行多次。例如,如果數組是(香蕉是一種很好的水果,我喜歡吃水果和香蕉),那麼這兩個元素應該匹配聖母院(水果,香蕉)。 –