【问题标题】:Strange PDO MySQL Problem奇怪的 PDO MySQL 问题
【发布时间】:2010-01-14 20:32:14
【问题描述】:

我正在尝试在 PHP 脚本中执行查询。该查询在我的 MySQL 客户端中运行良好,但它似乎不适用于我的代码。我正在使用 PDO。我认为它可能有局限性,因为它似乎适用于不太复杂的查询。

这是查询:

SELECT D.status, D.createdBy, D.createDate, D.modifiedBy, D.modifiedDate,D.IPAddress,  D.adminStatus, D.campus, D.buildingID, D.deviceShortName, D.distributionID, D.networkKey, D.deviceName, D.test, D.pkDevices, D.DNSRule, D.Domain, D.DNSOverride, D.noDNS, D.pkModel, DM.Model, DM.pkManufacturer, M.manufacturer FROM Devices AS D INNER JOIN DeviceModel AS DM ON D.pkModel = DM.pkModel INNER JOIN Manufacturer AS M ON DM.pkManufacturer =  M.pkManufacturer WHERE D.status = '1' AND D.adminStatus = 'Active' ORDER BY D.deviceName

这是我试图在我的脚本中调用它的地方:

$dbhDevices = newPDO('mysql:host='.$_SESSION['OpsDBServer'].'.ops.tns.its.psu.edu;dbname='.$_SESSION['OpsDB'], $_SESSION['yoM'], $_SESSION['aMa']);
$sqlDevices = "SELECT D.status, D.createdBy, D.createDate, D.modifiedBy,
D.modifiedDate, D.IPAddress, D.adminStatus, D.campus, D.buildingID,
D.deviceShortName, D.distributionID, D.networkKey, D.deviceName, D.test,
D.pkDevices, D.DNSRule, D.Domain, D.DNSOverride, D.noDNS, D.pkModel, DM.Model,
DM.pkManufacturer, M.manufacturer
FROM Devices AS D
INNER JOIN DeviceModel AS DM ON D.pkModel = DM.pkModel
INNER JOIN Manufacturer AS M ON DM.pkManufacturer = M.pkManufacturer
WHERE D.status = '1' AND D.adminStatus = 'Active' ORDER BY D.deviceName";
foreach ($dbhDevices->query($sqlDevices) as $rowDevices)
{

同样,查询确实适用于 MySQL 客户端。

【问题讨论】:

  • 脚本中发生了什么?是否生成或输出任何错误? (如果您提供更多信息,就会让人们更容易提供帮助。)
  • -1:“不起作用”从来都不是一个充分的问题描述。
  • 只是问一个显而易见的问题,newPDO 是您问题中的错字吗?它应该是 new PDO() 来实例化类

标签: php mysql pdo


【解决方案1】:

如果尚未启用错误,请尝试启用:

error_reporting(E_ALL);
$dbhDevices->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

【讨论】:

    【解决方案2】:

    在旧版本的 PDO 用法中,当您出于某种原因声明 PDO 变量时,您必须“初始化”它。尝试在一般初始化$dbhDevices 的代码之前放置一行,看看是否可以解决问题。我有疑问,因为您说它适用于不太复杂的查询,但值得一试。

    【讨论】:

      【解决方案3】:

      我通过使用 LEFT JOIN 而不是 INNER JOIN 使其工作。奇怪,但它正在工作。

      【讨论】:

        猜你喜欢
        • 2013-12-24
        • 2017-07-11
        • 2010-12-17
        • 1970-01-01
        • 1970-01-01
        • 2011-02-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多