PHP:在while循环期间更改查询变量

时间:2010-01-14 07:14:10

标签: php mysql variables loops while-loop

我希望从while循环内部更改查询的其中一个变量,是否可以执行此操作? EG。

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

我只想在单步执行while语句之前看看这是否可行,或者是否已完全生成$ data数组?

由于

4 个答案:

答案 0 :(得分:1)

我相信你要做的是通过更改变量来更改正在运行的查询?

当您更改变量时,您已经执行了查询,并且$ data是“完全生成”的。

答案 1 :(得分:0)

查询已执行,即使有效,更改变量也没有区别。当使用mysql_query执行查询时,它返回的数据就是那样,无论您更改查询中使用的变量多少,它都不会更改。

另外,我不明白为什么你甚至想做那样的事情以及你的目的是什么,如果你能详细说明一下,或许我们可以找到更好的解决你的问题的方法。

答案 2 :(得分: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);
    }
}

每次都要重新运行查询,但这可能不是你想要做的,它可能会陷入循环中。

答案 3 :(得分:0)

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

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

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

//为数组中的占位符赋值并执行一次。 $ Q->执行(阵列( '富'));

while($ row = $ q-> fetch())      {          if($ row ['column2'] =='original')              {$ v =“改变”; $ Q->执行(阵列($ V));打破;}              //使用新值执行新查询。      }