PHP ise deyim sorun

2 Cevap

Aşağıdaki kodu için, ben IF deyimini kullanmaya çalışıyorum

if (mysql_num_rows ($ Resa)> 0)

$ entry benim veritabanında herhangi bir tabloda "site" sütununda değilse foreach döngü çalışan önlemek için. $ Entry benim veritabanında herhangi bir tabloda "site" sütununda yoksa Ancak, ben hata iletisi: "() foreach için verilen geçersiz bağımsız değişken Uyarı" olsun. Herhangi bir fikir neden o yapıyor?

Teşekkür peşin,

John

$result = mysql_query("SHOW TABLES FROM feather") 
or die(mysql_error()); 

while(list($table)= mysql_fetch_row($result))
{
  $sqlA = "SELECT COUNT(*) FROM `$table` WHERE `site` LIKE '$entry'";

  $resA = mysql_query($sqlA) or die("$sqlA:".mysql_error());
  list($isThere) = mysql_fetch_row($resA);
  $isThere = intval($isThere);
  if ($isThere)
  {
     $table_list[] = $table;
  }

}

if(mysql_num_rows($resA)>0){
foreach ($table_list as $table) { 
    $sql = "SELECT votes_up FROM `$table` WHERE `site` LIKE '$entry'"; 
    $sql1 = mysql_query($sql) or die("$sql:".mysql_error());
   while ($row = mysql_fetch_assoc($sql1)) {
       $votes[$table] = $row['votes_up'];
       $sum += $row['votes_up'];
   } 

}
}
else{
print "";
}

2 Cevap

Bu değişkenleri başlatmak için iyi bir fikirdir:

$table_list = array(); // <-- Initialize variable.
while (list($table) = mysql_fetch_row($result)) {
    /* ... */
    $table_list[] = $table;
    /* ... */
}

if (mysql_num_rows($resA) > 0) {
    foreach ($table_list as $table) { 
        /* ... */
    }
}

Hiçbir girişleri $table_list hangi foreach döngü çalıştırdığınızda değişken yoksa anlamına gelir eklenir çünkü hatayı alıyoruz. Bu karışıklığı önlemek için ilk olarak başlatılamadı.

Tüm tabloların sayısı sıfır olduğu alınamadı, çünkü hiçbir girişleri eklendi nedeni $table_list olduğunu.

Bir foreach döngü içine girmeden önce de sadece bir dizi kontrol edebilirsiniz ama değişkenlerini başlatma, iyidir:

if (is_array($table_list))
foreach ($table_list as $table) {
  ...
}

Olmayan bir dizi geçmiş olabilir herhangi bir foreach döngüsünde önce bu kontrol etmek mantıklı bulunuyor. (Diğer yerlerde bir sürü oldukça gevşek iken) PHP foreachta bir dizi gerektiren katıdır. Ben her zaman, dolayısıyla tüm döngü değil, boş bir dizi olarak başka bir şey (örneğin bir dize) tedavi etmek için daha güzel olacağını düşündüm.