使用用户定义变量解决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中文网其他相关文章!