bindValue()

1. 定义

该方法将一个绑定到预处理 SQL 语句的指定参数的占位符。 成功时返回 TRUE,失败则返回 FALSE。

注:

  • 该方法只能绑定值,而不像PDOStatement::bindParam()方法一样绑定变量

2. 语法

PDOStatement::bindValue ( mixed $parameter , mixed $value [, int $data_type = PDO::PARAM_STR ] ) : bool

3. 参数说明

参数 可选性 数据类型 描述
$parameter 必需 mixed 占位符标识,类似:name的参数名或从 1 开始的参数索引位置
$value 必需 mixed 绑定到 SQL 语句参数的值
$data_type 可选 整型或常量 默认为PDO::PARAM_STR,通过PDO::PARAM_*常量明确指定的参数数据类型

4. 示例

<?php

// PDOStatement::bindValue()
// 将一个**值**绑定到预处理 SQL 语句的指定参数的占位符

try {
    $config = ['driver' => 'mysql', 'host' => 'localhost', 'dbname' => 'test', 'charset' => 'utf8', 'user' => 'root', 'pwd' => 'mysql'];
    $dsn = sprintf('%s:host=%s;dbname=%s;charset=%s', $config['driver'], $config['host'], $config['dbname'], $config['charset']);
    $conn = new PDO($dsn, $config['user'], $config['pwd']);
} catch (PDOException $e) {
    error_log($e->getMessage());
    echo $e->getMessage();
}

try {
    $sql = 'SELECT `name`,`rate`,`cover` FROM `movie` WHERE `name`=:name';
    $stmt = $conn->prepare($sql);
    $stmt->bindValue(':name', '霸王别姬');
    $stmt->execute();
    var_dump($stmt->fetch(PDO::FETCH_ASSOC));
    /* 输出:
    array(3) {
      ["name"]=>
      string(12) "霸王别姬"
      ["rate"]=>
      string(3) "9.6"
      ["cover"]=>
      string(74) "https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2561716440.jpg"
    }
    */
} catch (Exception $e) {
    echo "发生了错误:", $e->getMessage();
}

5. 延展阅读