您好!欢迎访问家园网-www.jy.wang!

家园网

举例讲一下php的问号占位符,多举几个例子,然后每个例子都给出输出结果

网络 作者:本站 点击:

以下是PHP中使用问号占位符的详细示例及输出结果说明:


示例1:基础查询

$pdo = new PDO('mysql:host=localhost;dbname=test', 'user', 'pass');
$stmt = $pdo->prepare("SELECT name FROM users WHERE id = ?");
$stmt->execute([1]);
$result = $stmt->fetch();
print_r($result);

输出结果‌:
若ID为1的用户名为John,则输出:

Array ( [name] => John [0] => John )

示例2:多条件查询

$stmt = $pdo->prepare("SELECT * FROM products WHERE price > ? AND stock < ?");
$stmt->execute([50, 100]);
$results = $stmt->fetchAll();
print_r($results);

输出结果‌:
返回价格大于50且库存小于100的所有产品数组,例如:

Array ( 
    [0] => Array ( [id] => 101 [name] => Laptop [price] => 999 [stock] => 10 ) 
    [1] => Array ( [id] => 102 [name] => Mouse [price] => 60 [stock] => 5 )
)

示例3:插入数据

$stmt = $pdo->prepare("INSERT INTO orders (user_id, product_id) VALUES (?, ?)");
$stmt->execute([5, 20]);
echo "插入的行数: " . $stmt->rowCount();

输出结果‌:

插入的行数: 1

示例4:IN子句动态参数

$ids = [3, 7, 9];
$placeholders = implode(',', array_fill(0, count($ids), '?'));
$stmt = $pdo->prepare("SELECT * FROM items WHERE id IN ($placeholders)");
$stmt->execute($ids);
$items = $stmt->fetchAll();
print_r($items);

输出结果‌:
返回ID为3、7、9的所有条目,例如:

Array (
    [0] => Array ( [id] => 3 [name] => Book ) 
    [1] => Array ( [id] => 7 [name] => Pen )
)

示例5:更新操作

$stmt = $pdo->prepare("UPDATE articles SET views = ? WHERE id = ?");
$stmt->execute([1000, 42]);
echo "更新的行数: " . $stmt->rowCount();

输出结果‌:

更新的行数: 1

关键点总结

  1. 防注入‌:所有示例均通过问号占位符隔离SQL逻辑与数据。

  2. 顺序绑定‌:参数按占位符顺序传递,需严格匹配数量。

  3. 灵活扩展‌:动态生成占位符(如IN子句)可适应复杂场景。

标签: