SQL veri çekerek, ve bir metin dosyasına yazma

7 Cevap php

Ben SQL veri çekme, ve daha sonra bir metin dosyasına yazmaya çalışıyorum. Bu yaptığı, bu metin dosyası üzerinde bir ölçüde, but it only pulls 1 from the table, which reads test:test<br> .

I want to be able to pull all the data from the table, and then post to the text file in a list format such as this...

    test:test
    test2:test2
    test3:test3

Ben yanlış ne yapıyorum bulmak gerekir.

<?php
$sql = mysql_query("SELECT * FROM _$setprofile ORDER BY fc DESC");
while($row = mysql_fetch_array($sql)){
$user = $row['user'];
$pass = $row['pass'];

$accounts = "$user:$pass<br>";

//Functionsss!
$file = "backups/$newcode.txt";
file_put_contents($file, $accounts);
}

echo "<a href=backups/$newcode.txt>TEST!</a>";
?>

7 Cevap

file_put_contents varolan dosyanın üzerine yazar. Yukarıdaki kod ile, sadece hiç bir satır alırsınız.

Bunun yerine bu deneyin:

<?php

$sql = mysql_query("SELECT * FROM _$setprofile ORDER BY fc DESC");
$content = "";

while($row = mysql_fetch_array($sql)){
  $user = $row['user'];
  $pass = $row['pass'];

  $accounts = "$user:$pass<br>";
  $content .= $accounts;

}

$file = "backups/$newcode.txt";
file_put_contents($file, $content);

echo "<a href=backups/$newcode.txt>TEST!</a>";
?>

Sen $ hesapları dize için veritabanı sonuçları ekleyerek değiliz; Sıfırdan her zaman onu yaratıyoruz. Böyle bir şey deneyin:

<?php
$accounts = "";
$sql = mysql_query("SELECT * FROM _$setprofile ORDER BY fc DESC");
while($row = mysql_fetch_array($sql)) {
  $user = $row['user'];
  $pass = $row['pass'];

  $accounts .= "$user:$pass<br>";
}

//Functionsss!
$file = "backups/$newcode.txt";
file_put_contents($file, $accounts);

echo "<a href=backups/$newcode.txt>TEST!</a>";
?>

bu yüzden size $ hesapları dize tüm sonuçları var bir kere daha sonra ekleme ve, siz dosyaya yazmak.

Eğer yeniden açılması ve her sizin süre döngü geçmesine ile dosyanın tüm içeriğini yeniden gibi görünüyor.

Bu deneyin:

<?php
$sql = mysql_query("SELECT * FROM _$setprofile ORDER BY fc DESC");
$file = "backups/$newcode.txt";
$fh = fopen($file, 'a') or die("can't open file");

while($row = mysql_fetch_array($sql)){
  $user = $row['user'];
  $pass = $row['pass'];

  $accounts = "$user:$pass<br>";

  fwrite($fh, $accounts);
}

fclose($fh);

echo "<a href=backups/$newcode.txt>TEST!</a>";
?>

Ayrıca, istemiyorsanız < br>, ancak gerçek bir satır sonu, kullanın:

  $accounts = "$user:$pass\n";

Yalnızca dosya içine bir içerik yazarken neden Diğerleri cevap var, bu bir öneri daha ama sen yerine, gerçek kullanıcı ve şifre kaydetmek istiyorsanız:

$accounts = "$kullanmakr:$pass<br>";

kullanmak

$accounts = $kullanmakr . ":" . $pass . "\n";

ama zaten biliyordum ve hata ayıklama amaçlı olduğunu kullanılarak olsaydı o zaman bu dikkate almayın.

İyi şanslar

Bir metin dosyası varsa, <br> etiketi de, özellikle sizin için yararlı olmayacaktır. Bir metin dosyasına gerçekleşmesi satırbaşı neden \n kullanmanız gerekir. Bu html olsaydı, o zaman farklı bir durum olurdu.

$accounts = "$user:$pass<br>";

olmalıdır

$accounts .= "$user:$pass\n";

ve kesinlikle dışarı döngü file_put_contents çekmek gerekir ya da dosyayı size döngü geçmesi her zaman üzerine olacak.

echo "select concat(user,':',pass,'<br>') from table order by fc desc" | mysql <database>

Bash bu tür bir şey yapmak için tercih ;)