【发布时间】:2012-07-13 09:38:57
【问题描述】:
我遇到了标题中提到的错误,这是我的PHP文件中的代码,我尝试重新查询,但未能纠正错误,谁能告诉我为什么会出现这种错误,是我形成错误的方式不正确?我看过一些类似的帖子,但我从这些帖子中知道问题应该是我的查询,但我不知道如何更改它。所以我可以请你帮忙告诉我查询的问题在哪里,这绝对可以帮助我弄清楚我的概念。
$query = "SELECT *
FROM Tech AS T, Client AS C, Site AS S, Log AS L
WHERE T.TechID=L.TechID, C.ClientID=L.ClientID, S.SiteID=L.SiteID";
if($sort=="Tech")
$query += "ORDER BY T.TechName ASC, L.Time DSC";
else if($sort=="Client")
$query += "ORDER BY C.ClientName ASC, L.Time DSC";
$result = mysql_query($query) or die('Error! ' . mysql_error());;
print "Real-Time check in/check out<br>";
print "<table><th><td>Tech</td><td>Client</td><td>Site</td>";
print "<td>Date and Time</td><td>Type</td></th>";
while($row = mysql_fetch_array($result)){
print "<tr><td>".$row['T.TechName']."</td>";
print "<td>".$row['C.ClientName']."</td>";
print "<td>".$row['S.SiteName']."</td>";
print "<td>".$row['L.Time']."</td>";
print "<td>".$row['L.Type']."</td></tr>";
}
print "</table>";
以下是错误信息:
错误!您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“0”附近使用正确的语法
【问题讨论】:
-
请注意,
or die(mysql_error())不应该出现在生产代码中,因为die会破坏 HTML 输出,并且数据库错误消息不应该像discloses too much information 那样向非管理员用户透露。更好的方法是正确实现错误处理(并使用 PDO 代替已弃用的过时 mysql 扩展)。 -
你不应该在这里使用连接吗?而且我认为您忘记在“ORDER BY”字符串中添加空格。
-
Implicit joins 不应用于支持explicit joins。
-
请注意,每当您生成 SQL 语句并遇到语法错误时,您应该获取生成的实际语句(并发布它),而不仅仅是生成语句的代码。跨度>
-
SO 使用问答形式,而不是论坛形式。问题不应包含答案,例如更正的代码。把它留给答案。