0

我试图从我的数据库中获取日期,但只有在满足某些条件时。我想要一个表来填充来自 mySQL 的数据,只有当数据以用户名提交时。(即该数据与该用户相关。)

此数据已保存为TIMESTAMP.

$sql = "SELECT * FROM bug LIMIT 100";
$result = mysql_query($sql)or die(mysql_error());


     while($row = mysql_fetch_array($result)){

$bdate      =   $row['bugDate'];
$bfor      =    $row['bugFor'];


$finduserid= mysql_query
    ("SELECT UserId FROM user WHERE userName='{$_SESSION['myusername']}'"); 

          if($finduserid)

    {
$getuserid = mysql_fetch_assoc($finduserid);
    }

$findbdate = 
    mysql_query("SELECT bugDate FROM bug WHERE bugDate = '$bdate' 
    AND  '$bfor' = '" . $getuserid['UserId'] . "'");

        if($findbdate)
            {
        $getbdate = mysql_fetch_array($findbdate);
            }


$bdatetime = new DateTime($getbdate['bugDate']);
$formattedbdate = date_format($bdatetime, 'd,M Y');

如果有人可以帮助我,我将不胜感激。

显然,安全性很糟糕,我很确定这种方法将是做我想做的事情的最低效的方法,但是我是一个菜鸟,并且是一种边做边学的人。如果您有一些关于安全的新手友好文档并且看到这让您感到畏缩,请随时发布链接。任何帮助是极大的赞赏。

(如果您需要了解更多信息,请告诉我,如果我一开始没有将其包括在内,我们深表歉意!)

编辑:我让它工作了。我正在做任何人能想到的最迂回、最荒谬的方式。虽然我没有使用 JOIN它,但它让我走上了正确的道路。将 250 行毫无意义的无效代码压缩到 3-4 行,这对除了我之外的所有人来说都是显而易见的。

我选择了我的会话登录等于我在数据库上的 loginName 的行。

$finduserid=  "SELECT UserId FROM user WHERE userName='{$_SESSION['myusername']}'";     



$runuserid = mysql_query($finduserid)or die(mysql_error());

          while($getuserid = mysql_fetch_array($runuserid)){
$userid = $getuserid['0'];
                        }

然后,我只选择了包含我的用户名的记录(而不是所有内容,然后试图摆脱其中没有我的用户名的所有内容。)-_-(我是个白痴。)

$sql = "SELECT * FROM bug WHERE bugFor = '$userid'";

$result = mysql_query($sql)or die(mysql_error());
4

1 回答 1

0

阅读JOINs

我无法准确说出您的代码应该做什么,或者完全破译您的数据库架构,但下面的查询应该会获取在给定日期提交的当前用户的所有错误:

SELECT b.*
FROM bug b INNER JOIN users u
  ON b.bfor = u.userID
WHERE u.userName = '{$_SESSION['myusername']}'
  AND b.bugDate = '$bdate'
于 2013-10-15T18:05:10.527 回答