Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich Parameter dynamisch an MySQL-Abfragen in PHP binden?

Wie kann ich Parameter dynamisch an MySQL-Abfragen in PHP binden?

Linda Hamilton
Linda HamiltonOriginal
2024-12-03 01:00:14988Durchsuche

How Can I Dynamically Bind Parameters to MySQL Queries in PHP?

MySQL-Parameter dynamisch in PHP binden

In Ihrer Anwendung stoßen Sie auf Szenarien, in denen Sie Parameter dynamisch an vorbereitete SQL-Abfragen binden müssen. Während Ihr aktueller Ansatz funktioniert, mangelt es ihm an Vielseitigkeit, insbesondere wenn es um den Umgang mit einer unterschiedlichen Anzahl von Parametern geht.

Um die gewünschte Flexibilität zu erreichen, können Sie die folgende Technik nutzen, indem Sie call_user_func_array() und den Entpackungsoperator (...$) verwenden var):

public function get_custom_result($sql, $types = null, $params = null) {
    $stmt = $this->mysqli->prepare($sql);
    $stmt->bind_param($types, ...$params);

    if (!$stmt->execute()) return false;
    return $stmt->get_result();
}

Mit dieser aktualisierten get_custom_result()-Methode können Sie die Parametertypen und -werte dynamisch über $types und $params angeben Argumente bzw. Die ...$params-Syntax entpackt das Array und übergibt jeden Wert einzeln an die bind_param()-Methode.

Berücksichtigen Sie beispielsweise die folgenden Abfrage- und Parameterwerte:

$sql = "
SELECT *
FROM root_contacts_cfm
WHERE root_contacts_cfm.cnt_id = ?
AND root_contacts_cfm.cnt_firstname = ?
ORDER BY cnt_id DESC";

$params = ['1', 'Tk'];

Das ist möglich Führen Sie nun die Abfrage mit dynamischer Parameterbindung aus:

$res = $output->get_custom_result($sql, 'ss', $params);

while ($row = $res->fetch_assoc()) {
    echo $row['fieldName'] .'<br>';
}

Das obige ist der detaillierte Inhalt vonWie kann ich Parameter dynamisch an MySQL-Abfragen in PHP binden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn