当使用php bindParam时:name中的冒号是什么意思
PHP手册中有以下PDO bindParam语句示例:当使用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
/* 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();