Mehrfachverwendung gebundener Parameter
Bei der Erstellung einer einfachen Datenbanksuchmaschine müssen Entwickler möglicherweise verschiedene Arten von Informationen einbeziehen und abrufen Daten aus mehreren Tabellen. Wenn vorbereitete Anweisungen mit gebundenen Parametern für den Mustervergleich verwendet werden, wird in der PDO-Dokumentation davor gewarnt, denselben benannten Parametermarker mehr als einmal zu verwenden.
Um diese Einschränkung zu umgehen, besteht eine mögliche Lösung darin, jeden :term-Parameter durch :termX zu ersetzen (wobei X term = n darstellt). Dies kann jedoch umständlich und fehleranfällig werden.
Ein alternativer Ansatz ist die Verwendung benutzerdefinierter MySQL-Variablen. Durch die Speicherung von Parametern in diesen Variablen wird der Code besser lesbar und es sind keine zusätzlichen PHP-Funktionen erforderlich. So funktioniert es:
Beispiel:
$sql = "SET @term = :term"; try { $stmt = $dbh->prepare($sql); $stmt->bindValue(":term", "%$term%", PDO::PARAM_STR); $stmt->execute(); } catch (PDOException $e) { // error handling } $sql = "SELECT ... FROM table WHERE name LIKE @term OR number LIKE @term"; try { $stmt = $dbh->prepare($sql); $stmt->execute(); $stmt->fetchAll(); } catch (PDOException $e) { // error handling }
Vorteile benutzerdefinierter Variablen:
Überlegung:
Ein zusätzliches MySQL Es ist eine Abfrage erforderlich, die möglicherweise aus Leistungsgründen berücksichtigt werden muss.
Das obige ist der detaillierte Inhalt vonWie kann ich mehrere gebundene Parameter in MySQL-vorbereiteten Anweisungen für den Mustervergleich effizient verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!