PHP: while döngüsü sırasında sorgu değişkenleri değiştirme

4 Cevap php

Ben ise döngü içindeki, bunu yapmak mümkün, bir sorgu değişkenlerden birini değiştirmek için umut oldu? 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';
    }
}

Ben sadece bu mümkün, ya da deyimi ile adım önce, $ data dizi zaten tam oluşturulan olup olmadığını görmek ister misiniz?

Teşekkürler

4 Cevap

i yapmaya çalıştığınız ne iman değişkeni değiştirerek çalışan sorguyu değiştirmek mi?

Eğer değişkeni değişiyor zaman, zaten sorgu idam var, ve dediğiniz gibi $ veri 'tamamen üretildiği' edilir.

Sorgu çalışmış olsa bile değişkenler hiçbir fark olurdu değiştirerek, idam edilmiştir. Sorgu mysql_query ile çalıştırıldığında, döndürür veri adil olduğunu ve ne olursa olsun size sorguda kullanılan değişkenleri değiştirmek ne kadar değişmeyecek.

Sen bile ve ne amacı biraz ayrıntılı olabilir, belki de sizin soruna daha iyi bir çözüm bulabiliriz, gibi bir şey yapmak isterdim neden Ayrıca ben anlamıyorum.

Eğer mysql_query () kullandığınızda, sorgu zaten yapılmıştır, mysql_fetch_array () sadece geri dönüş verileri yorumlar. Yani hayır.

Teorik çizgisinde bir şey yapabilirsiniz:

$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);
    }
}

Sorgunun her seferinde yeniden çalıştırmak için, ama bu gerçekten bir yapmak istediklerini olmayabilir döngü içinde sıkışabilir.

No Sorgu idam edilmiş ve dönüş dizi yaptı. Ama bu kodu (sorguları yapmak için çok güvenli, etkili bir yöntem) İlginizi çekebilir düşünüyorum:

// Make an instance of the PDO object to connect to database. $db = new PDO('mysql:unix_socket=/tmp/mysql.sock', $user, $password);

// load query into object using ? as the placeholder. $q = $db->prepare("SELECT column1, column2 FROM table1 WHERE column1 = ?");

// give a value to the placeholder inside an array and execute once. $q->execute(array('foo'));

while ($row = $q->fetch()) { if ($row['column2'] == 'original') {$v = "altered"; $q->execute(array($v)); break;} // execute new query using new value. }