SQL mit Params als vollständige SQL ausgeben


Status
Dieses Thema wurde gelöst! Zur Lösung gehen…

EuroCent

Erfahrenes Mitglied
Hallo zusammen,

ich habe da mal eine Bescheidene Frage:
Ich möchte mittels SQL und Params auslesen, wie die SQL vollständig aussieht.
Um sie dann auf der DB-Ebene Testen zukönnen.

Beispiel:
PHP:
$sql = "INSERT INTO INSERT INTO [table] ([field_0], [field_1], [field_2], [field_3]) VALUES(?, ?, ?, ?)";
$params = array($field[0], $field[1], $field[2], $field[3]);
//$stmt = sqlsrv_prepare($msconnect, $sql, $params);
//sqlsrv_execute($stmt);
Ich möchte aber vorher, also bevor Ich "sqlsrv_prepare" verwende und es dann an die DB mittels "sqlsrv_execute"schicke, ausgeben wie es vollständig als SQL aussieht.

Gibt es dafür schon eine Funktion seitens sqlsrv?
Falls nein, wie kann Ich das umsetzen? :)

Vielen Dank :)
 

EuroCent

Erfahrenes Mitglied
Für PDO hatte ich mal eine Klasse geschrieben. Keine Ahnung ob sowas auch für sqlsrv möglich ist.
Guten Morgen @Yaslaw,

ich werde es mal testen, ob Ich das anwenden kann. :)
Theoretisch benötige Ich ja nur das getSQL aus deiner Erweiterten Klasse :)

Ich habe nur noch nicht heraus gefunden woher "queryString" in der Funktion kommt :D
Ist das eine Standard Vaiable von PDO?
 

EuroCent

Erfahrenes Mitglied
@Yaslaw ich habe es so gelöst, natürlich in Anlehnung an deine Erweiterung.
Dabei habe Ich aber nur getSQL beachtet. :)

PHP:
/**
* Gibt die SQL Answeiung vollständig zurück ohne sie zu starten
* Sehr gut fürs das Debugging!
*
* @param {string} $sql SQL Anweisung
* @param {array} $params Parameter
*
* @return {string} $sql SQL-Anweisung
*/
function sqlsrv_getsql($sql, $params = array()) {
    if(count($params) > 0) {
        if(is_numeric(key($params))) {
            foreach($params as $key => &$param) {
                $sql = preg_replace('/\?/', $param, $sql, 1);
            }
        } else {
            foreach($params as $key => $param) {
                $sql = preg_replace("/(?<!\w)({$key})(?!\w)/is", $param, $sql);
            }
        }
    }

    return $sql;
}
 
Zuletzt bearbeitet:
Status
Dieses Thema wurde gelöst! Zur Lösung gehen…

Neue Beiträge