我有一個數據庫,其中有一個名爲users的表和一個名爲name的字段。我有以下的HTML代碼:致命錯誤:調用成員函數bindParam()字符串
<form action="change.php?link=edit" method="post">
<input type="text" name="name" id="name" class="lg" value="">
<input type="submit" name="sub" value="Save changes">
</form>
而這個PHP代碼,即什麼用戶在輸入中寫入更新名稱字段:
if(isset($_POST['sub'])) {
if (!empty($_POST['name'])) {
$name= $_POST['name'];
$id=$_SESSION['id'];
$sql = "UPDATE users SET name=:name WHERE id=$id";
$sql->bindParam(":name", $name);
$consulta = $db->prepare($sql);
$result = $consulta->execute();
}
}
}
該代碼給我的錯誤「致命錯誤:調用一個成員函數bindParam()的字符串」,但是,如果我的PHP代碼更改爲:
$sql = "UPDATE users SET name='$name' WHERE id=$id";
和註釋行:
//$sql->bindParam(":name", $name);
我沒有得到任何錯誤。不過,我知道這是一個糟糕的編程習慣,因爲代碼容易受到sql注入的影響。我怎麼能解決這個問題?
取下單引號arount'':name''。系統已經知道它是一個字符串。 –