`

bindColumn、bindParam与bindValue的区别

阅读更多

bindColumn:绑定一列到一个 PHP 变量(类似于list()函数为变量赋值)

复制代码
<?php

//连接数据库函数

functionconnect() {

try {

    $dbh = new PDO("mysql:host=localhost;dbname=test",'root','root');

return $dbh;

  } catch(Exception $e){

echo $e->getMessage();

  }

}

// 使用bindColumn读取数据

functionreadDataByColumn($dbh) {

  $sql = 'SELECT id,name FROM users'; # 读取users表中id和name字段

try {

    $stmt = $dbh->prepare($sql);

    $stmt->execute();

 

/*  通过列号绑定,将ID这一列的值绑定到$id这个变量上  */

    $stmt->bindColumn(1, $id);

/*  通过列名绑定,将name这一列字段的值绑定到$name这个变量上  */

    $stmt->bindColumn('name', $name);

 

while ($row = $stmt->fetch(PDO::FETCH_BOUND)) {

      $data = $id . "\t" . $name . "\t";

echo"<pre>";

print $data;

    }

  }

catch (PDOException $e) {

print $e->getMessage();

  }

}

 

$dbh = connect();       // 连接数据库

readDataByColumn($dbh); // 使用bindColumn读取数据

?>
复制代码

 

运行结果如下:

1        Michael 

2        Andy    

3        xiaoming

 

bindParam:绑定一个参数到指定的变量名(类似于占位符)

复制代码
<?php

//连接数据库函数

functionconnect() {

try {

    $dbh = new PDO("mysql:host=localhost;dbname=test",'root','root');

return $dbh;

  } catch(Exception $e){

echo $e->getMessage();

  }

}

 

// 使用bindColumn读取数据

functionreadDataByParam($dbh) {

  $num = 10;

  $username = '%m%';

  $sql = 'SELECT id, name FROM users WHERE id < :num and name like :username';

try {

    $stmt = $dbh->prepare($sql);                              // 预处理

    $stmt->bindParam(':num', $num, PDO::PARAM_INT);           // 数字类型

    $stmt->bindParam(':username', $username, PDO::PARAM_STR); // 字符串类型

    $stmt->execute();                                         // 执行SQL语句

while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {           // $row是一行,使用while依次输出下一行

      $data = $row['id'] . "\t" . $row['name'] . "\t";

echo"<pre>";

print $data;

    }

  }

catch (PDOException $e) {

print $e->getMessage();

  }

}

 

 

$dbh = connect();       // 连接数据库

readDataByParam($dbh); // 使用bindColumn读取数据

?>
复制代码

 

bindValue — 把一个值绑定到一个参数(与bindParam类似)

复制代码
<?php

//连接数据库函数

functionconnect() {

try {

    $dbh = new PDO("mysql:host=localhost;dbname=test",'root','root');

return $dbh;

  } catch(Exception $e){

echo $e->getMessage();

  }

}

 

// 使用bindColumn读取数据

functionreadDataByValue($dbh) {

  $num = 10;

  $username = '%m%';

  $sql = 'SELECT id, name FROM users WHERE id < :num and name like :username';

try {

    $stmt = $dbh->prepare($sql);                              // 预处理

    $stmt->bindValue(':num', 10, PDO::PARAM_INT);             // 数字类型

    $stmt->bindValue(':username', '%m%', PDO::PARAM_STR);     // 字符串类型

    $stmt->execute();                                         // 执行SQL语句

while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {           // $row是一行,使用while依次输出下一行

      $data = $row['id'] . "\t" . $row['name'] . "\t";

echo"<pre>";

print $data;

    }

  }

catch (PDOException $e) {

print $e->getMessage();

  }

}

 

$dbh = connect();       // 连接数据库

readDataByValue($dbh); // 使用bindColumn读取数据

?>
复制代码

 

bindParam和bindValue的区别

  1.  PDOStatement::bindParam不能绑定常量,而bindValue可以绑定常量 如 $stm->bindParam(":sex",$sex); //正确 $stm->bindParam(":sex","female"); //错误 $stm->bindValue(":sex",$sex); //正确 $stm->bindValue(":sex","female"); //正确
  1. bindParam 变量被以引用方式绑定到点位符上,而且仅仅当调用PDOStatement::execute()时才会去计算具体被绑定变量在PDOStatement::execute()被调用时的值. 例如,使用bindParam方式:
复制代码
<?php

$sex = 'male';

$s = $dbh->prepare('SELECT name FROM students WHERE sex = :sex');

$s->bindParam(':sex', $sex); // use bindParam to bind the variable

$sex = 'female';

$s->execute(); // 将执行 WHERE sex = 'female'
复制代码

 

使用bindvalue方式:

复制代码
<?php

$sex = 'male';

$s = $dbh->prepare('SELECT name FROM students WHERE sex = :sex');

$s->bindValue(':sex', $sex); // use bindValue to bind the variable's value

$sex = 'female';

$s->execute(); // 将执行 WHERE sex = 'male'

 
复制代码
分享到:
评论

相关推荐

    PHP PDOStatement对象bindpram()、bindvalue()和bindcolumn之间的区别

    2. `bindValue()`: 与`bindParam()`不同,`bindValue()`直接将一个值绑定到参数,而不是一个变量。这意味着一旦调用`bindValue()`,该参数的值就固定了,不会随着变量值的变化而变化。因此,你可以直接传入一个值,...

    对PHP PDO的一些认识小结

    它支持诸如bindColumn、bindParam、bindValue等方法来绑定变量和值,以及execute来执行预处理语句。PDOStatement还提供了fetch和fetchAll方法来获取结果集中的数据,以及errorInfo和errorCode来获取错误信息。 ...

    Web应用安全:PHPPDOMySQL的安全连接方法文本.docx

    使用`bindParam()`或`bindValue()`方法可以将变量或常量绑定到预处理语句的参数上。例如: ```php $stmt-&gt;bindParam(':username', $username); $stmt-&gt;bindParam(':password', $password); $stmt-&gt;execute(); // ...

    Php中的pdo函数库

    - `PDOStatement-&gt;bindColumn()`、`bindParam()`和`bindValue()`:将结果集列绑定到PHP变量。 - `PDOStatement-&gt;setAttribute()`:设置PDOStatement对象的属性。 ### PDO的适用场景: PDO适合于需要在不同数据库...

    PDO预处理语句PDOStatement对象使用总结

    在执行预处理语句前,需要使用`bindParam()`或`bindValue()`方法绑定参数。例如,使用`bindParam()`绑定参数: ```php $name = 'John Doe'; $address = '123 Main St.'; $phone = '555-1234'; $stmt-&gt;bindParam(':...

    PHP PDO函数简介

    - **`bindValue()`**:绑定值到指定的参数。 - **`closeCursor()`**:关闭结果集游标,以便释放资源。 #### 五、高级特性 - **预处理语句**:PDO通过预处理语句来提高安全性及性能。 - **事务处理**:PDO支持通过`...

    PDO的安全处理与事物处理方法

    3. `bindParam()`:与`bindValue()`类似,但会绑定变量而不是其当前值,这意味着如果变量的值在执行前改变,那么预处理语句中的值也会更新。 4. `bindColumn()`:用于将结果集中的一列与一个变量绑定,当该列被读取...

    pdo基础函数库

    - **`PDOStatement-&gt;bindColumn()`**、**`PDOStatement-&gt;bindParam()`**、**`PDOStatement-&gt;bindValue()`**:用于绑定参数到预处理语句。 #### 四、PDO 使用示例 假设我们有一个简单的用户表 `users`,包含字段 `...

    PDO::lastInsertId讲解

    - `PDOStatement::bindValue`和`PDOStatement::bindParam`:绑定参数到预编译的SQL语句,与`PDO::lastInsertId`一起使用可以确保数据安全。 - `PDOStatement::bindColumn`:将结果集列绑定到变量,与`PDO::...

    PDO::quote讲解

    - `PDOStatement::bindValue`:将变量绑定到预处理语句中的参数。 - `PDOStatement::bindParam`:将变量绑定到预处理语句中的参数,变量的变化会影响参数值。 - `PDOStatement::bindColumn`:将结果集中的列绑定到...

    PDO::rollBack讲解

    - PHPPDOStatement::bindValue讲解 - PHP PDOStatement::bindParam讲解 - PHP PDOStatement::bindColumn讲解 - PDO::setAttribute讲解 - PHP PDOStatement::execute讲解 这些文章提供了关于PDO相关方法的更多细节,...

    PHP PDO函数库(PDO Functions)第1/2页

    例如,PDOStatement-&gt;bindColumn()函数用于将结果集的一列绑定到PHP变量,而PDOStatement-&gt;bindParam()函数和PDOStatement-&gt;bindValue()函数分别用于绑定参数到指定的变量名或直接绑定值。 PDOStatement-&gt;...

Global site tag (gtag.js) - Google Analytics