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

提前致谢,

约翰

$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>";

最佳答案

您的查询可能失败。

尝试回显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();
  }

10-07 19:39