我在这里搜索了同名的主题,但我没有找到与我的相关的任何内容。我按照教程和sql
$sql .= "WHERE event_id = :id LIMIT 1"
我看到作者使用了:id。我以为应该是$ id。我不知道这个php表示法。请有人告诉我发生了什么事?谢谢。
答案 0 :(得分:3)
这称为parameter binding
。目的是防止SQL注入。
示例:
<?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();
?>
http://php.net/manual/en/pdostatement.bindparam.php
这是一个很好的解释: How can I prevent SQL injection in PHP?
答案 1 :(得分:2)
$sql = "UPDATE client SET password = :password, phone = :phone WHERE id = :id;";
$query = $this->pdo->prepare($sql);
$params = array(
':id' => $ClientId,
':password' => $password,
':telephone' => $phone
);
$query->execute($params)
它是带有PDO的mySQL的预准备语句的语法。 你可以这样做:
$sql = "UPDATE client SET password = $password, phone = $phone WHERE id = $ClientId;";
$query = $this->pdo->query($sql);
我使用&#34;扩展PDO&#34;在构造函数上,我使用&#34; $this->pdo = new PDO($dsn, $user, $pass, $options);
&#34;
答案 2 :(得分:1)
非常感谢lad2025和samlev告诉我这叫做参数绑定。我发现一个例子对其他人来说非常容易,可能会有像我一样的问题:
$sth = $dbh->prepare ("INSERT INTO animal (name, category)
VALUES (:name, :cat)");
$sth->bindValue (":name", "ant");
$sth->bindValue (":cat", "insect");
$sth->execute ();
$sth->bindValue (":name", "snail");
$sth->bindValue (":cat", "gastropod");
$sth->execute ();