假设我在变量中有以下查询:
$sql = "select id, salary, fname, lname from users where id = ? and salary > ?";
和这样的数组:
$params = array (
0 => '38765',
1 => '4000');
我想知道是否有一个简单的内置PHP来替换"?"在查询中获得以下结果:
"select id, salary, fname, lname from users where id = '38765' and salary > '4000' ";
查询不会被执行,这更像是一个棘手的操作问题而不是sql。
这和我一样接近,但看起来PHP可能会为它构建一些东西:
foreach ($params as $param){
$pos = strpos($sql, '?');
$sql = substr_replace($sql, "'".$param."'", $pos, 1);
}
答案 0 :(得分:1)
是的,有。
请参阅php.net的此代码示例
$stmt = $dbh->prepare("SELECT * FROM REGISTRY where name = ?");
if ($stmt->execute(array($_GET['name']))) {
while ($row = $stmt->fetch()) {
print_r($row);
}
}
http://php.net/manual/en/pdo.prepared-statements.php#example-1016
但是此变体要求您使用PDO
。
有关详细信息,请参阅此链接: http://php.net/manual/en/book.pdo.php