mysql prepared语句是否有编号占位符

jucafojl  于 2021-06-15  发布在  Mysql
关注(0)|答案(1)|浏览(376)

我正在尝试使用mysql编写的语句。我想知道是否有像我可以在sprintf或vsprintf中使用的数字占位符的可能性。例如。:

<?php
$format = 'The %2$s contains %1$d monkeys';
echo sprintf($format, $num, $location);
?>
qybjjes1

qybjjes11#

这取决于在php中使用哪个sql库。
如果你使用 PDO 库可以使用命名参数,这与使用数字是一样的。http://php.net/manual/en/pdostatement.bindparam.php 举例说明:

$calories = 150;
$colour = 'red';
$sth = $dbh->prepare('SELECT name, colour, calories
    FROM fruit
    WHERE calories < :calories AND colour = :colour');
$sth->bindParam(':calories', $calories, PDO::PARAM_INT);
$sth->bindParam(':colour', $colour, PDO::PARAM_STR, 12);
$sth->execute();

在上面的例子中,由于参数是命名的,所以以何种顺序提供“卡路里”和“颜色”变量,或者它们出现在语句中的什么位置都无关紧要。
然而 mysqli 不支持这一点,相反,您必须使用simple ? 占位符,然后按照要使用的确切顺序提供参数-请参阅http://php.net/manual/en/mysqli-stmt.bind-param.php.

相关问题