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的区别
- PDOStatement::bindParam不能绑定常量,而bindValue可以绑定常量 如 $stm->bindParam(":sex",$sex); //正确 $stm->bindParam(":sex","female"); //错误 $stm->bindValue(":sex",$sex); //正确 $stm->bindValue(":sex","female"); //正确
- 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'
相关推荐
2. `bindValue()`: 与`bindParam()`不同,`bindValue()`直接将一个值绑定到参数,而不是一个变量。这意味着一旦调用`bindValue()`,该参数的值就固定了,不会随着变量值的变化而变化。因此,你可以直接传入一个值,...
它支持诸如bindColumn、bindParam、bindValue等方法来绑定变量和值,以及execute来执行预处理语句。PDOStatement还提供了fetch和fetchAll方法来获取结果集中的数据,以及errorInfo和errorCode来获取错误信息。 ...
使用`bindParam()`或`bindValue()`方法可以将变量或常量绑定到预处理语句的参数上。例如: ```php $stmt->bindParam(':username', $username); $stmt->bindParam(':password', $password); $stmt->execute(); // ...
- `PDOStatement->bindColumn()`、`bindParam()`和`bindValue()`:将结果集列绑定到PHP变量。 - `PDOStatement->setAttribute()`:设置PDOStatement对象的属性。 ### PDO的适用场景: PDO适合于需要在不同数据库...
在执行预处理语句前,需要使用`bindParam()`或`bindValue()`方法绑定参数。例如,使用`bindParam()`绑定参数: ```php $name = 'John Doe'; $address = '123 Main St.'; $phone = '555-1234'; $stmt->bindParam(':...
- **`bindValue()`**:绑定值到指定的参数。 - **`closeCursor()`**:关闭结果集游标,以便释放资源。 #### 五、高级特性 - **预处理语句**:PDO通过预处理语句来提高安全性及性能。 - **事务处理**:PDO支持通过`...
3. `bindParam()`:与`bindValue()`类似,但会绑定变量而不是其当前值,这意味着如果变量的值在执行前改变,那么预处理语句中的值也会更新。 4. `bindColumn()`:用于将结果集中的一列与一个变量绑定,当该列被读取...
- **`PDOStatement->bindColumn()`**、**`PDOStatement->bindParam()`**、**`PDOStatement->bindValue()`**:用于绑定参数到预处理语句。 #### 四、PDO 使用示例 假设我们有一个简单的用户表 `users`,包含字段 `...
- `PDOStatement::bindValue`和`PDOStatement::bindParam`:绑定参数到预编译的SQL语句,与`PDO::lastInsertId`一起使用可以确保数据安全。 - `PDOStatement::bindColumn`:将结果集列绑定到变量,与`PDO::...
- `PDOStatement::bindValue`:将变量绑定到预处理语句中的参数。 - `PDOStatement::bindParam`:将变量绑定到预处理语句中的参数,变量的变化会影响参数值。 - `PDOStatement::bindColumn`:将结果集中的列绑定到...
- PHPPDOStatement::bindValue讲解 - PHP PDOStatement::bindParam讲解 - PHP PDOStatement::bindColumn讲解 - PDO::setAttribute讲解 - PHP PDOStatement::execute讲解 这些文章提供了关于PDO相关方法的更多细节,...
例如,PDOStatement->bindColumn()函数用于将结果集的一列绑定到PHP变量,而PDOStatement->bindParam()函数和PDOStatement->bindValue()函数分别用于绑定参数到指定的变量名或直接绑定值。 PDOStatement->...