我看到一个看起来像这样的mysql代码
select * from customer
where name = :name;
在Mysql
中,不允许在值前面使用冒号,我的假设是为查询提供冒号以将其与PHP
函数绑定。
我在寻找的是使用哪个函数将查询与冒号绑定?
到目前为止,我已经检查了mysqli_stmt_bind_param
,但用于将值替换为参数的机制是问号,而不是冒号。
答案 0 :(得分:0)
以下是一个来自php.net的例子:
<?php
/* Execute a prepared statement by binding PHP variables */
$calories = 150;
$colour = 'red';
$sth = $dbh->prepare('SELECT name, colour, calories
FROM fruit
WHERE calories < :calories AND colour = :colour');
$sth->bindParam(':calories', $calories, PDO::PARAM_INT);
$sth->bindParam(':colour', $colour, PDO::PARAM_STR, 12);
$sth->execute();
?>
您应该先尝试在Google上搜索,因为这是一个简单的函数调用。
有关详细信息,请查看:http://php.net/manual/en/pdostatement.bindparam.php
答案 1 :(得分:0)
你用绑定来纠正,但有两种方法;
?
- 一个简单的占位符,您可以使用数字索引进行绑定。例如;
$sql = "INSERT INTO `foo` (`bar`,`baz`) VALUES (?, ?)";
$smt = $pdo->prepare($sql);
$smt->bindParam(1, $bar);
$smt->bindParam(2, $baz);
// ...
:foo
- 一个简单的占位符,您可以使用字符串索引进行绑定。例如;
$sql = "INSERT INTO `foo` (`bar`,`baz`) VALUES (:bar, :baz)";
$smt = $pdo->prepare($sql);
$smt->bindParam(':bar', $bar);
$smt->bindParam(':baz', $baz);
// ...
有两个可用的数据库API涉及绑定;
您可以看到this article by "Use the Index, Luke"看看实际上是如何完成绑定的。