如何找出使用PHP匹配多语句mysql_query的哪个部分?

时间:2014-07-15 10:16:51

标签: php mysql sql

我在PHP中有一个查询。它要复杂得多,但为了清楚起见,我们可以说查询是:

$query = "SELECT * FROM my_table WHERE (foo = 'bar') OR (foo = 'bar_bar') OR (foo = 'bar_bar_bar')";
$result = mysql_query($query);

如果$result符合foo = 'bar'foo = 'bar_bar'foo = 'bar_bar_bar',我们是否可以找到每一行while($row = mysql_fetch_assoc($result) { switch($row['foo']) { case 'bar' : // we matched 'bar' break; case 'bar_bar' : // we matched 'bar_bar' break; case 'bar_bar_bar' : // we matched 'bar_bar_bar' break; } }

我知道我可以这样做:

{{1}}

但是这样效率很低,因为你基本上是在查询你的结果,加上很多查询和结果太复杂了,不能这样做。

那么,是否有一种简单有效的查找方法,例如查询的哪个语句的索引匹配,或者我最好将查询拆分为单独的查询?

感谢。

2 个答案:

答案 0 :(得分:1)

你为什么要检查?您可以根据结果直接编写所需的功能。 在函数中,您将编写而不是将其硬编码为名称,只需给出

$row['var_name']

答案 1 :(得分:0)

你必须从我的表中选择foo

$query = "SELECT foo FROM my_table WHERE (foo = 'bar') OR (foo = 'bar_bar') OR (foo = 'bar_bar_bar')";
$result = mysql_query($query);

//你可以简单地使用mysql_fetch_array()而不是mysql_fetch_assoc

while($row = mysql_fetch_array($result) {
    switch($row['foo']) {
        case 'bar' :
        // we matched 'bar'
        break;
        case 'bar_bar' :
        // we matched 'bar_bar'
        break;
        case 'bar_bar_bar' :
        // we matched 'bar_bar_bar'
        break;
    }
}