我有一个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调用的结果,可能会改变,我无法控制它。匹配可以发生在同一行多次。例如,如果数组是(香蕉是一种很好的水果,我喜欢吃水果和香蕉),那么这两个元素应该匹配圣母院(水果,香蕉)。 –