2011-12-05 75 views
0

我试图做一个网页,只是使用Dreamweaver CS5一个CREATE VIEW。我该如何输入我的代码才能接收包含与登录用户相关的所有数据的表格。初学者在PHP语法,MYSQL_QUERY错误

mysql_query(
CREATE VIEW UserResults 
AS 
    SELECT E.No, E. Description 
     , Count(R.RID WHERE $Username= R.Owner) 
     , Count(R.RID WHERE $Username= R.Owner AND Status==’Active’) 
    FROM ETable AS E, RTABLE as R 
    ORDER BY E.No) 
+1

您的SQL是容易仅供参考SQL注入攻击。 –

+0

您也不应该通过代码创建视图 - 就像表一样,它们在创建之后会一直存在,所以您只需在安装应用程序时创建它们即可。 – duskwuff

+0

双引号缺少 –

回答

3

你必须把你的查询放在引号中,使它成为一个字符串。

mysql_query("CREATE VIEW UserResults AS SELECT E.No, E. Description, Count(R.RID WHERE $Username= R.Owner), Count(R.RID WHERE $Username= R.Owner AND Status==’Active’) FROM ETable AS E, RTABLE as R ORDER BY E.No") 
+0

非常感谢你 – MadMoney

1

Daniel对报价是正确的。但是,你应该看看PDO,该mysql_职能是有点过时。您可以阅读关于here的更多信息。

1
  • 你有一个额外的结局括号,应删除
  • 意见不应该有ORDER BY
  • WHERE条款不应该在SELECT的中间,你将需要使用CASE
  • 要返回笛卡尔积而不是加入你的表一起,这可能会提供更多的结果不是你想要/期望。

CASE语句THEN块的R.RID可能需要一个1,不能完全确定你希望从这些COUNT陈述你原本得到什么。

我试图找出你试图做的,我觉得这是它:

CREATE VIEW UserResults AS 
    SELECT E.No, E.Description 
     , SUM(CASE 
       WHEN $Username = R.Owner THEN R.RID 
       ELSE 0 
      END) AS SumOfOwner 
     , SUM(CASE 
       WHEN $Username = R.Owner AND Status = 'Active' THEN R.RID 
       ELSE 0 
      END) AS SumOfOwnerAndActive 
    FROM ETable AS E 
    INNER JOIN RTABLE as R ON E.No = R.ENo 
    GROUP BY E.No, E.Description