Странная проблема с PDO MySQL - PullRequest
0 голосов
/ 14 января 2010

Я пытаюсь выполнить запрос в сценарии 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.

Ответы [ 3 ]

2 голосов
/ 14 января 2010

попробуйте включить ошибки, если это еще не сделано:

error_reporting(E_ALL);
$dbhDevices->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
0 голосов
/ 15 января 2010

Я заработал, используя левое соединение вместо внутреннего соединения. Странно, но это работает.

0 голосов
/ 14 января 2010

В более старых версиях использования PDO вы должны «инициализировать» переменную PDO, когда вы по какой-то причине объявляете ее. Попробуйте поставить строку перед этим кодом, который в общем случае инициализирует $dbhDevices, и посмотрите, поможет ли это. У меня есть сомнения, потому что вы говорите, что он отлично работает с менее сложными запросами, но стоит попробовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...