php - 为 HTML 输入字段格式化 MySQL 查询

标签 php html mysql input

我无法格式化要输入 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 样式的转义。您可以使用适合手头工作的工具。由于您正在处理 HTML,因此需要使用 htmlspecialchars(),例如

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

您只会在提交表单时使用 sql 转义符,并且您在 SQL 上下文中使用提交的数据。

关于php - 为 HTML 输入字段格式化 MySQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18260445/

相关文章:

MySQL 数据透视表列数据作为行

php - 谁能说一下我在这个正则表达式中的错误是什么

php - 如何在 mysql 数据库中存储泰米尔字体

javascript - 使用 PHP 从 JSON 检索数组

html - opera mini - 加载页面时出现问题

MySQL Order By 查询 varchar 保存日期

php - 过滤日期order_date在其日期范围sql问题

javascript - 在 Javascript 中排队并停止将点击事件传播到 div 内部

html - span 元素内的 CSS 多个空格

mysql - 触发器从另一个表 MySQL 更新总和