簡體   English   中英

格式化用於HTML輸入字段的MySQL查詢

[英]Formatting MySQL query for HTML input field

我在格式化數據字符串以進入HTML輸入字段時遇到麻煩。 這是我的查詢:

$sql_active = "SELECT * FROM table WHERE id='$id'";
$result_active = $mysqli->query($sql_active);
$row = mysqli_fetch_array($result_active);
$job_description = stripslashes($row['job_description']);

然后,我使用$ job_description變量在頁面上顯示信息。 在頁面的后面,我有一個隱藏的表單域,我也需要將信息放入其中。 因此,我這樣做:

<input type="hidden" name="description" value="<?php echo $mysqli->real_escape_string($job_description); ?>" />

問題在於,當用戶首次輸入描述字段時,他們可以使用引號,雙引號等(無論他們想要什么)。 在此示例中,我到了這里,它不允許信息超出引號。 它顯示如下:

<input type="hidden" name="description" value="PLEASE NOTE: YOU MUST HAVE EXPERIENCE\r\n\r\nOne of the city\'s best employers. Basic \" handyman\" repair skills preferred. ">

當它碰到第一個撇號時,它會轉義它,但是由於用戶同時使用了撇號和引號,因此變得很困惑。

您完全誤解了轉義的目的。 這些函數是特定於目的的-在輸出到HTML上下文中時,執行SQL轉義序列毫無意義,因為HTML不使用SQL樣式的轉義,也不使用SQL樣式的轉義。 您已經為手頭的工作使用了適當的工具。 由於您正在執行HTML,因此需要使用htmlspecialchars(),例如

<input ... value="<?php echo htmlspecialchars($job_description) ?>" />
                             ^^^^^^^^^^^^^^^^

僅在提交表單並且在SQL上下文中使用提交的數據時才使用sql轉義內容。

暫無
暫無

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

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