2016-07-13 29 views
0

Ich versuche, PHP zu verwenden, um eine SQL-Abfrage auszuführen, die symmetrische Schlüsselentschlüsselung verwendet. Ich kann jedoch keine Ergebnisse erzielen.PHP & Mysql - Abfragen mit symmetrischer Schlüsselentschlüsselung

Mein PHP-Code sieht wie folgt aus:

$sql = "OPEN SYMMETRIC KEY ServerKey DECRYPTION BY CERTIFICATE ServerCertificate WITH PASSWORD = '[email protected]' SELECT CONVERT(nvarchar, DecryptByKey([address])) AS [address] FROM [serverDBO].[dbo].[allUsers] where id=63"; 

$result = $db->Execute("$sql"); 

var_dump($result); 

Die Var_dump Befehl ergibt:

Objekt (ADORecordSet_empty) # 200 (6) {[ "Datenprovider"] => string (5) "leer" ["databaseType"] => bool (falsch) ["EOF"] => bool (wahr) ["_numOfRows"] => int (0) ["fields"] => bool (false) ["Verbindung"] => bool (falsch)} empty10

  • Allerdings, wenn ich genau die gleiche Abfrage ausgeführt wird, wenn auf die Datenbank über Microsoft-Server-Management-Studio verbunden I Ergebnisse erhalten erfolgreich zurückgekehrt:

    71 Teststrecke

Kann jemand raten, was sein könnte geht hier schief oder wie kann ich das in PHP richtig machen?

Antwort

0

In Ihrem $sql gibt es eine SELECT Aussage, so dass Sie höchstwahrscheinlich das Ergebnis nach der Ausführung der Anweisung holen müssen:

$result = $db->execute($sql); 
while ($row = $result->fetchRow()) { 
    print_r($result); 
} 

ADOdb documentation Siehe für weitere Details.

P.S. Die doppelten Anführungszeichen in Ihrem execute() Anruf führen einfach nichts aus, Sie können sie weglassen.

+0

Vielen Dank für die Antwort Joachim, ich habe die vorgeschlagenen Änderungen gemacht. Leider erhalte ich immer noch keine Ergebnisse. – NAP50

+0

Aber es sollte zumindest eine andere Fehlermeldung geben. Vielleicht sagt es, was immer noch falsch ist –

+0

Mit print_r, wie Sie oben vorgeschlagen haben, ergibt sich für mich überhaupt keine Ausgabe, es werden auch keine Fehlermeldungen auf diese Weise angezeigt. Wenn ich den var_dump-Befehl stattdessen verwende, scheint es nur anzuzeigen, dass nichts zurückgegeben wurde. – NAP50