簡體   English   中英

PHP / SQL預備語句帶雙引號

[英]PHP/SQL prepared statement with double quotes

我正在使用HTML輸入元素來接受來自用戶的數據並將其保存在mySQL數據庫中。 為此,我使用PHP和mysqli創建一個准備好的語句。

在我嘗試接受包含雙引號(“)的輸入字符串之前,此方法非常有效。如果輸入字符串包含雙引號,則保存的數據將為字符串,直到雙引號字符為止。

例如:

我看到一個7'9“的人。

將另存為:

我看到一個7'9

我搜索過高低,但是找不到解決方案。 我已經嘗試過mysqli_real_escape_string,但這只是添加反斜杠來轉義有意義的字符。 與准備好的語句結合使用時,反斜杠將按字面意義進行解釋,並且雙引號仍會中斷字符串。 所以我的例子是:

我看到了7 \\ 9

我什至以為PHP可能沒有從輸入元素中獲取整個字符串,但是當我回顯該元素的值時,我確實看到了整個字符串。

這是一些示例代碼。 我刪除了一些業務詳細信息,但這通常是我要嘗試的操作。

$sqlSave = $objConnection->prepare('update tbl set Answer=? where ID=?;');
$sqlSave->bind_param("si", $sqlAnswer, $sqlID);

$sqlSave->execute();

我覺得自己缺少明顯的東西,所以請原諒我的無知。 任何幫助或其他信息表示贊賞。

是的,的確很明顯。 只需查看生成的HTML代碼 ,您就會立即獲得線索。

然后認真學習必須始終使用htmlspecialchars()對HTML屬性進行編碼

我誤解了。 PHP正確保存了數據。 當數據顯示在HTML輸入元素中時,該數據已被切斷。

使用用htmlspecialchars()轉換的“到"和顯示一切。

謝謝大家幫助我。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM