Nasıl veri içeren bir PHP dizi aracılığıyla ben döngü MySQL geri dönen?

6 Cevap php

Tamam ben birkaç alanları ile bir tablo var. Alanlardan biri username. username ile aynı olan birçok kez, örneğin vardır:

    • Kullanıcı adı: bob
    • parola: bob
    • Rapor: 1
    • Kullanıcı adı: bob
    • parola: bob
    • Rapor: 2

I select * where username='bob'; için bir SQL deyimi yaptım ama ben şu PHP işlevi yaptığınızda, sadece son sonuç döndürür:

$thisrow = mysql_fetch_row($result);

Ben her satırda her alanı almak gerekir. Bunu nasıl yapıyor hakkında gitmek gerekir?

$mainsection="auth"; //The name of the table
$query1="select * from auth where username='$user'"; 
$result = mysql_db_query($dbname, $query1) or die("Failed Query of " . $query1);  //do the query
$thisrow=mysql_fetch_row($result);
echo "Study: " . $thisrow[1] . " - " . $thisrow[5];

Böyle bir aptal soru için özür dilerim. Ben bana yaşam için çalışan birden fazla alanın while döngüler almak gibi olamaz.

6 Cevap

mysql_fetch_row bir anda her satır bir getirir. Birden çok satır almak için, böyle bir while döngü kullanırsınız:

while ($row = mysql_fetch_row($result))
{
    // code
}

Bir döngü kullanın ve yerine satır mysql_fetch_array() kullanın:

while($row = mysql_fetch_array($result)) {
   echo "Study: " . $row[1] . " - " . $row[5];
   // but now with mysql_fetch_array() you can do this instead of the above
   // line (substitute userID and username with actual database column names)...
   echo "Study: " . $row["userID"] . " - " . $row["username"];
}

I suggest you to read this: http://www.w3schools.com/php/php_mysql_select.asp It will give you an overview idea of how to properly connect to mysql, gather data etc

Sorunuzun için, bir döngü kullanmak gerekir:

while ($row = mysql_fetch_row($result)){//code}

Olarak HTW tarafından dedi

Siz de böyle bir tablodaki tüm satırların sayısını elde edebilirsiniz:


    $count = mysql_fetch_array(mysql_query("SELECT COUNT(*) AS count FROM table"));
    $count = $count["count"];

Ayrıca, (gerekirse), belirli bir koşula uyan satırları saymak üstünde ve sadece seçmek için normal bir WHERE yan tümcesi ekleyebilirsiniz. Sonra döngüler için sayımını kullanabilirsiniz:

    $data = mysql_query("SELECT * WHERE username='bob'");
    for ($i = 0; $i 

Ayrıca, mysql_fetch_array () genellikle bir ilişkisel dizi veri depolayan olarak kullanmak için çok daha kolay olduğunu, o yüzden sayısal dizin bulunuyor ziyade, satır adı ile veri erişebilirsiniz.

Edit: There's some kind of bug or something going on where my second code block isn't showing everything once it's posted. It shows fine on the preview.

Ben ekrandan DB mantığı ayırmak istiyorum. Genellikle ben HTML kodundaki diyebileceğimiz bir diziye benim sonuçlar koydu. Tamamen kişisel tercihi; ama burada sorun yaklaşım olurdu nasıldı var: (Ben üretimde hata mesajını $ sql alırdım)

<?php
$sql="
  SELECT *
  FROM auth
  WHERE username='$user';
  ";
$result = mysql_query($sql)
  or die("Failed Query : ".mysql_error() . $sql);  //do the query

while ($ROW = mysql_fetch_array($result,MYSQL_ASSOC)) {
  $USERS[] = $ROW;
}
?>

HTML CODE

<? foreach ($USERS as $USER) { ?>

Study: <?=$USER['dbFieldName'];?> - <?=$USER['dbFieldName2'];?>

<? } //foreach $USER ?>

$ Qry = mysql_query (select * where username = 'bob');

if (mysql_num_rows ($ qry))

{

 while($row=mysql_fetch_array($qry,MSQL_NUM))

 {

        echo $row[0]."&nbsp;&nbsp;".$row[1]."&nbsp;&nbsp;".$row[2]."<br>";

 }

}