拉取数据并将其打印在HTML表格中

时间:2010-03-18 04:02:06

标签: php mysql

从名为“submission”的MySQL表中包含字段“loginid,submissionid,title,url,datesubmitted,displayurl”,我想打印一个HTML表,其中包含所有“title”和相应的“datesubmitted”,其中“loginid” “等于”$ profile。“我试图使用的代码如下。它不起作用。任何想法为什么它不起作用?

提前致谢,

约翰

$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 个答案:

答案 0 :(得分:1)

您的查询可能失败。

尝试回显mysql_error()的回复;在尝试查询后查看问题可能是什么。

您还应该保护您的输入免受注射。如果loginID是用户名,则需要在带有引号的mySQL查询中包围字符串 - 如果loginID是用户名。如果它是一个整数你可能没问题。

有更强大的方法可以做到这一点,但只是:

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

答案 1 :(得分:0)

我可以看到的一个问题是您没有检查mysql_query()

的返回值 如果mysql_query()无法执行查询,则返回false。所以你需要做一个检查,例如:

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

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

答案 2 :(得分:0)

您的问题是关于调试,这是最重要的编程艺术。没有人可以为你找到错误,你必须自己做。借助小技巧。

$profile = $_GET['profile'];更改为$profile = intval($_GET['profile'];)

$result = mysql_query($sqlStr);更改为

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

andd在代码顶部的2行之后,再次运行它,看看它说了什么。如果仍然没有,你的表中没有匹配的记录。

ini_set('display_errors',1);
error_reporting(E_ALL);
相关问题