SQL Query aus PHP Code unklar

tklustig

Erfahrenes Mitglied
Hallo,
folgendes SQL-Query ist mir insofern unklar, als dass ich nicht weiß, welcher Wert hinter dem jeweiligen Doppelpunkt steckt- welchen Wert haben also price,id und version? Weiß jemand Rat?
SQL:
UPDATE product SET cheapest_price = :price WHERE id = :id AND version_id = :version';
Hier der gesamte PHP Code:
PHP:
 public function update(array $parentIds, Context $context): void
    {
        $parentIds = array_unique(array_filter($parentIds));

        if (empty($parentIds)) {
            return;
        }

        $all = $this->fetchPrices($parentIds, $context);

        $versionId = Uuid::fromHexToBytes($context->getVersionId());

        $cheapestPrice = new RetryableQuery(
            $this->connection,
            $this->connection->prepare('UPDATE product SET cheapest_price = :price WHERE id = :id AND version_id = :version')
        );
          $cheapestPrice->execute([
              'price' => serialize($container),
              'id' => Uuid::fromHexToBytes($productId),
              'version' => $versionId,
           ]);
 
Zuletzt bearbeitet:
Lösung
Zeile 18 bis 19 geben dir auskunft. Da werden die Variaben ans prepared Statement geknüpft
PHP:
              'price' => serialize($container),
              'id' => Uuid::fromHexToBytes($productId),
              'version' => $versionId,
Zeile 18 bis 19 geben dir auskunft. Da werden die Variaben ans prepared Statement geknüpft
PHP:
              'price' => serialize($container),
              'id' => Uuid::fromHexToBytes($productId),
              'version' => $versionId,
 
Lösung
Danke Dir. In SQL werden somit also Platzhalter definiert. Danke!
Jein. Ist DBMS-abhängig
Code:
":price", "@price"
usw. sind sogenannte "named Parameters"
Nicht jedes DBMS unterstützt das.

SQLite z.Bsp. unterstützt "named Parameters" --> wandelt diese aber intern um in "?" (Was mWn der einzige ANSI-SQL-Standard für Parameter ist) und ersetzt DANN diese "?" mit den jeweiligen Werten in der REIHENFOLGE wie sie übergeben werden.

Würde mich nicht überraschen, wenn es in MySQL, MariaDB, MSSQL etc. genau so ist
 
Zurück