2010-01-14 107 views
0

我希望能够在while循环中更改查询的变量之一,是否可以这样做?例如。PHP:在while循环期间更改查询变量

$query = mysql_query('SELECT column1, column2 FROM table1 WHERE column1 = "'.$variable.'";', $conn); 
while ($data = mysql_fetch_assoc($query)) { 
    if($data['column2'] == 'original') { 
     $variable = 'altered'; 
    } 
} 

我只是想看看,如果这是可能的,或者是已经完全产生的$ data数组,通过while语句步进过吗?

感谢

回答

1

我相信你正在尝试做的是改变你通过改变变量运行查询?

由你改变的变量的时候,你已经执行的查询和$数据“完全生成”像你说的。

0

查询已执行,改变变量将有即使它的工作没有区别。当使用mysql_query执行查询时,它返回的数据就是这样,不管您更改查询中使用的变量的多少,都不会改变。

此外,我不明白你为什么会想即使做这样的事情和你的目的是,如果你能详细一点,也许我们可以找到一个更好的解决您的问题。

0

查询当您使用的mysql_query(已执行),在mysql_fetch_assoc()只解释返回的数据。所以不行。

理论上你就可以做线沿线的东西:

$query = mysql_query('SELECT column1, column2 FROM table1 WHERE column1 = "'. $variable.'";', $conn); 
while ($data = mysql_fetch_assoc($query)) { 
    if($data['column2'] == 'original') { 
     $variable = 'altered'; 
     // Run the query with the new $variable value. 
     $query = mysql_query('SELECT column1, column2 FROM table1 WHERE column1 = "'. $variable.'";', $conn); 
    } 
} 

要每次都重新运行查询,但可能不是你真正想要做一个可能陷入循环的东西。

0

否。查询已执行并返回数组。但我认为这代码你可能感兴趣的(非常安全,有效的方法进行查询):

//使PDO对象的实例来连接数据库。 $ db = new PDO('mysql:unix_socket =/tmp/mysql.sock',$ user,$ password);

//将查询加载到对象中使用?作为占位符。 $ q = $ db-> prepare(“SELECT column1,column2 FROM table1 WHERE column1 =?”);

//得到的值到一个数组内的占位符,并且执行一次。 $ q-> execute(array('foo'));

而($行= $ Q->取()){ 如果 ($行[ '列2'] == '原始') {$ V = “改变的”; $ Q->执行(阵列($ V)); break;} //使用新值执行新的查询。 }