如何在mysql查询中绑定参数?

时间:2016-06-30 17:24:29

标签: php

我搜索了绑定参数。但它让我感到困惑。我真的是php和mysql的初学者。

这是代码:

$query ="UPDATE table_user_skills SET rating='" . $_POST["rating"] . "' where rating_id='".$_POST['id']."'";

$result = $conn->query($query);

我想知道如何在此示例查询中应用绑定参数方法。谢谢你的回复。

感谢所有回复。我的代码工作

update.php

$sql = "UPDATE table_user_skills SET rating=? WHERE rating_id=?";

$stmt = $conn->prepare($sql);

$stmt->bind_param('sd', $myrate, $myrateid);
$stmt->execute();

if ($stmt->errno) {
  echo "Error" . $stmt->error;
}
else print 'Your rate is accepted.';

$stmt->close();

1 个答案:

答案 0 :(得分:1)

编写查询时,请将值( $_POST变量)保留在SQL代码之外,并使用占位符代替它们。根据您在PHP中使用哪个界面与MySQL数据库进行通信(MySQLiPDO),您可以使用命名或未命名的占位符代替。< / p>

以下是使用PDO

的示例
$query = "UPDATE table_user_skills SET rating= :ratings where rating_id= :id";
$stmt = $conn->prepare($query);
$stmt->execute($_POST);

我们在这里做的是将SQL代码发送到MySQL(使用PDO::prepare方法)以获取PDOStatement对象(表示在上面的示例中由$stmt )。然后,我们可以使用PDOStatement::execute数据您的$_POST变量)发送到MySQL的单独路径。请注意SQL查询中的占位符是如何按照您期望的$_POST变量命名的。因此,SQL 代码永远不会与数据混淆,并且SQL injection没有机会。

有关使用prepared statements的详细信息,请参阅手册。