作為工作的一部分,我想使用表單更新數據庫。由于數據庫很大并且被很多用戶使用,我希望這種操作至少是安全的,以便更安全。HTML 腳本:<form action="http://localhost/modifier_infos_signaletique.php" method=POST > <div class="id_sign"> <h5>Id "Signalétique" :</h5> <input type="text" name="id_sign" id="id_sign"/><br> </div> <h5>Infos "Signalétique" : </h5> <input class="comment" type="text" id="maj_infos" name="maj_infos" required maxlength='140'/><br> <input type="submit" value="Submit" /></form>腳本:<?php $user = 'xxxx'; $pass = 'xxxx'; try{ $dbconn = new PDO('pgsql:host=localhost;port=5432;dbname=xxxx',$user, $pass); $dbconn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $maj = $_POST['maj_infos']; $id = $_POST['id_sign']; $query = $dbconn->prepare("UPDATE signaletique SET infos = ':infos' WHERE id = ':id'"); $query->bindParam(':infos', $maj, PDO::PARAM_STR); $query->bindParam(':id', $id, PDO::PARAM_INT); $query->execute(); echo 'Données mises à jour'; } catch(PDOException $e){ echo "Erreur : " . $e->getMessage(); }?>但是,當我使用此腳本時,會出現此錯誤:**錯誤:SQLSTATE[HY093]:無效參數號::infos **該錯誤是由于用于 bindParam 函數的參數引起的。但是,我在我的 PostgreSQL 數據庫的屬性中有“字符變化”中的信息。我試圖將此參數更改為“文本”,但錯誤仍然存在。請原諒我提出這個問題,但我是 PHP 的新手,而且我的 SQL 技能很薄弱,因為我經常使用 pgAdmin 及其工具來構建我的數據庫并與之交互。這是我的數據庫的屏幕截圖:信息參數在屏幕截圖的“文本”中,但基本此屬性在“字符變化”(140) 中。感謝您的幫助。
1 回答

POPMUISE
TA貢獻1765條經驗 獲得超5個贊
在您的查詢字符串中,您將單引號放在占位符周圍。這使它們成為字符串,而不是占位符。使用占位符時不需要引號。
這應該工作:$query = $dbconn->prepare("UPDATE signaletique SET infos = :infos WHERE id = :id");
- 1 回答
- 0 關注
- 122 瀏覽
添加回答
舉報
0/150
提交
取消