2010-01-14 100 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;} //使用新值執行新的查詢。 }