当使用php bindParam时:name中的冒号是什么意思

当使用php bindParam时:name中的冒号是什么意思,php,pdo,Php,Pdo,PHP手册中有以下PDO bindParam语句示例: <?php /* Execute a prepared statement by binding PHP variables */ $calories = 150; $colour = 'red'; $sth = $dbh->prepare('SELECT name, colour, calories FROM fruit WHERE calories < :calories AND colour = :c

PHP手册中有以下PDO bindParam语句示例:

<?php
/* Execute a prepared statement by binding PHP variables */
$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();
?>


冒号是否表示
:color
是一个参数?

映射到查询中的命名占位符。绑定不需要它,如果不存在,驱动程序将自动添加它

在您的代码中

$sth = $dbh->prepare('SELECT name, colour, calories
    FROM fruit
    WHERE calories < :calories AND colour = :colour');
                     ^^^^^^^^^              ^^^^^^^
PDO还支持未命名的占位符,这些占位符只是问号
。你按位置把它们捆起来

$sth = $dbh->prepare('SELECT name, colour, calories
        FROM fruit
        WHERE calories < ? AND colour = ?');
此外,您只需将所有值作为数组传递给
execute
函数,它也将执行绑定


无论是
bindparam
还是
execute
绑定,都必须通过在查询中如何使用绑定来解决绑定问题。未命名是位置性的,命名是按名称命名的。

参数

参数标识符。对于使用命名占位符的已准备语句,这将是以下形式的参数名称:name。对于使用问号占位符的准备好的语句,这将是参数的1索引位置

变量

要绑定到SQL语句参数的PHP变量的名称

请参阅此处的文档以供参考


对不起,那个答案我想不通。例如,
color
是指定的占位符吗?对
color
(带冒号和不带冒号)的两个引用是指同一个对象吗?我的示例没有真正意义,因为字符串是

$sth = $dbh->prepare('SELECT name, colour, calories
        FROM fruit
        WHERE calories < ? AND colour = ?');
$sth->bindParam(1, $calories, PDO::PARAM_INT);
$stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email) 
VALUES (:firstname, :lastname, :email)");
$stmt->bindParam(':firstname', $firstname);
$stmt->bindParam(':lastname', $lastname);
$stmt->bindParam(':email', $email);

// insert a row
$firstname = "John";
$lastname = "Doe";
$email = "john@example.com";
$stmt->execute();