使用使用者定義變數來解決Prepared語句中參數重複問題
建立資料庫搜尋引擎通常涉及大量使用者輸入參數。 但是,通常不支援在準備好的語句中直接重複使用相同的命名參數標記。
一個更好的選擇是利用 MySQL 使用者定義變數。這種方法增強了程式碼的清晰度和可讀性。
以下是實施此解決方案的方法:
<code class="language-sql">$sql = "SET @term = :term"; try { $stmt = $dbh->prepare($sql); $stmt->bindValue(":term", "%$term%", PDO::PARAM_STR); $stmt->execute(); } catch (PDOException $e) { // Error handling }</code>
<code class="language-sql">$sql = "SELECT ... FROM table WHERE name LIKE @term OR number LIKE @term"; try { $stmt = $dbh->prepare($sql); $stmt->execute(); $result = $stmt->fetchAll(); //More descriptive variable name } catch (PDOException $e) { // Error handling }</code>
此技術可以多次重複使用單一參數標記,從而規避了直接重複命名參數的限制。雖然它引入了額外的 MySQL 查詢來設定變量,但產生的程式碼的可讀性和簡單性的提高通常證明了這個小小的開銷是合理的。
以上是MySQL使用者定義變數如何解決Prepared語句參數重複問題?的詳細內容。更多資訊請關注PHP中文網其他相關文章!