假设我想选择记录Id = 30
。准备好的语句允许两种绑定参数的方式:
问号
$id = 30;
$q = $conn->prepare("SELECT * FROM pdo_db WHERE id > ?");
$q->execute(array($id)); // Here above ID will be passed
命名参数
$sth = $conn->prepare("SELECT `id`, `title` FROM `pdo_db` WHERE `id` > :id");
$sth->execute(array(
':id' => 30
));
两者都工作正常并给出准确的结果,但我无法获得两者之间的确切差异,也不知道何时应该使用其中之一?
问号参数称为位置性的参数。
参数定义为:
和一个名字叫named参数。
规则是你不能在准备好的声明中混合这两者。
位置参数的工作方式很简单 - 如果您有两个位置参数,则可以指定一个包含两个元素的数组。数组值将按照它们在数组中出现的顺序进行绑定。
命名参数有点棘手,它们不必为了出现而受到约束。您还可以在语句中多次重复一个命名参数,但只能将其绑定一次来传递值 - 当 PDO 设置为模拟时,最后一部分将起作用$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, TRUE);
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)