Veri çekerek ve bir HTML tablosunda yazdırmadan

3 Cevap php

Alanları "LoginID, submissionid, title, url, datesubmitted, displayUrl" içeren "teslim" olarak adlandırılan MySQL tablodan, bir HTML tablosu Thats yazdırmak istiyorum tüm "başlığı" ve "LoginID" eşittir "datesubmitted" karşılık "içeriyor $ profili. " Ben kullanmaya çalışıyorum kod aşağıda. Bu çalışmıyor. Neden herhangi bir fikir çalışmıyor?

Teşekkür peşin,

John

$profile = $_GET['profile'];  

$sqlStr = "SELECT loginid, submissionid, title, url, datesubmitted, displayurl
             FROM submission
            WHERE loginid = $profile
         ORDER BY datesubmitted DESC";    

$result = mysql_query($sqlStr);

$arr = array(); 
echo "<table class=\"samplesrec\">";
while ($row = mysql_fetch_array($result)) { 
    echo '<tr>';
    echo '<td class="sitename1"><a href="http://www.'.$row["url"].'">'.$row["title"].'</a></td>';
    echo '</tr>';
    echo '<tr>';
    echo '<td class="sitename2">'.$row["datesubmitted"].'</a></td>';
    echo '</tr>';
    }
echo "</table>";

3 Cevap

Sizin sorgu muhtemelen başarısız oluyor.

Mysql_error dan getirisi () yankılanan deneyin; sorun ne olabilir görmek için sorguyu denedikten sonra.

Ayrıca enjeksiyon karşı girişini korumak gerekir. LoginID bir kullanıcı adı ise, tırnak ile mySQL sorguda bir dize çevreleyen gerekir - LoginID bir kullanıcı adı ise. Bir tam sayı ise tamam olabilir.

Sadece ama bunu yapmak için daha sağlam yolu vardır:

  $profile = mysql_real_escape_string($_GET['profile']);

  $sqlStr = "SELECT loginid, submissionid, title, url, datesubmitted, displayurl
               FROM submission
              WHERE loginid = '$profile'
           ORDER BY datesubmitted DESC";

  $result = mysql_query($sqlStr);

  if($result) {
      // Handle output
  } 
  else {
      echo 'query failed';
      // don't leave this here in production!
      echo mysql_error();
  }

Görebildiğim tek sorun mysql_query() dönüş değeri kontrol etmiyor olmasıdır

mysql_query() döner false bu sorguyu yürütmek için başarısız olur. Yani bir çek gibi bir şey yapmanız gerekir:

$result = mysql_query($sqlStr);
if(! $result) {

  //....error occured...prepare $message
  die($message);
}

soru debugging, en önemli programlama sanatına ilişkin. Kimse sizin için bir hata bulabilirsiniz, bunu kendiniz yapmak zorunda. Küçük hileler yardımıyla.

değişim $profile = $_GET['profile']; için $profile = intval($_GET['profile'];)

değişim $result = mysql_query($sqlStr); için

$result = mysql_query($sqlStr) or trigger_error(mysql_error()." in ".$sqlStr);

andd kodunuzu üstünde 2 satır ardından yeniden çalıştırmak ve söylediklerine bakın. Hala bir şey varsa, sizin tablodaki eşleşen kayıtları yok.

ini_set('display_errors',1);
error_reporting(E_ALL);