【问题标题】:PHP+MSSQL JOIN two tables outputs nothing - "No tuples"PHP+MSSQL JOIN 两个表什么都不输出 - “没有元组”
【发布时间】:2012-07-04 15:06:20
【问题描述】:
$conn=odbc_connect('mydatabase','','');
$sql="SELECT 
    Orders.OrderID,
    Orders.OrderDate,
    \"Order Details\".OrderID,
    \"Order Details\".UnitPrice,
    \"Order Details\".Quantity,
    \"Order Details\".Discount,
  FROM 
    \"Order Details\"
  INNER JOIN 
    Orders 
  ON \"Order Details\".OrderID = Orders.OrderID";
$rs=odbc_exec($conn,$sql) or die("<p>".odbc_errormsg());
while (($row = odbc_fetch_array($rs)) !== false)

当我尝试输出 $rs 的结果时,没有返回任何内容。如果我尝试分别从 Orders 或“Order Details”访问字段,它工作正常,但如果我尝试 JOIN 两个表,它什么也不输出。

在使用 MSSQL 时,这是从名称中包含空格的表中选择字段的正确方法吗?当我尝试 "SELECT * FROM \"Order Details\"" 时它似乎有效,但是当我尝试加入表时,我必须指定 "\Order Details\".OrderID,我认为这可能是它变得混乱的地方。

Apache 错误日志返回一个奇怪的“odbc_fetch_array(): No tuples available at this result”消息,但我不肯定这是实际问题,因为我看到此错误消息出于不相关的原因随机弹出。不过,我还是不太明白,所以我想我应该提一下。

谢谢!

【问题讨论】:

  • 将查询直接放入数据库会发生什么?

标签: php sql-server join tuples


【解决方案1】:

不要使用“/”,而是使用括号。

"SELECT Orders.OrderID, [Order Details].UnitPrice 
 FROM [Order Details] INNER JOIN Orders ON [Order Details].OrderID = Orders.OrderID"

【讨论】:

  • 感谢您的建议,但我尝试了方括号并且行为是相同的。
  • Orders.OrderID 和 [Order Details].OrderID 的数据类型是否相同?
  • 一个是数字,另一个是根据 Access 的自动编号。那会导致问题吗?我是 php 新手,并认为它仍然会将它们视为相同。
  • 假设两者都是整数,应该没问题。您能否将两个表中的一些数据添加到您的问题中。这可能会有所帮助。
猜你喜欢
  • 2013-02-07
  • 2022-07-27
  • 2011-11-19
  • 1970-01-01
  • 2021-02-20
  • 1970-01-01
  • 1970-01-01
  • 2012-01-17
  • 2020-06-15
相关资源
最近更新 更多