php - 在 MySQL ENUM 值中使用撇号将填充 HTML 组合框以进行数据库搜索

标签 php mysql sql

我首先在 MySQL 列中创建一个带有撇号的 ENUM 值,然后使用该值通过 PHP 填充 HTML 组合框,然后使用该值作为搜索数据库的选择,我遇到了麻烦。

这是我用来创建 ENUM 值的 SQL(我只显示有问题的值,而通常会有多个值):

ALTER TABLE  `primary_images` CHANGE  `imgClass`  `imgClass` ENUM(  'Robin\'s'  ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL

这是我在数据库列中最终得到的结果:

`imgClass` enum('Robin''s') DEFAULT NULL

因此我的第一个问题是为什么我的转义反斜杠和单引号变成了双引号? (顺便说一句,我正在使用 phpmyadmin 来管理我的数据库)

这是我用来创建组合框选项的 PHP:

$imgClass_query = "SELECT DISTINCT imgClass FROM primary_images ";

...

while ($imgClass_row = mysql_fetch_array($imgClass_result))
  // Add a new option to the combo-box
  echo "<option value='".$imgClass_row[imgClass]."'>".htmlspecialchars($imgClass_row[imgClass])."</option>\n";

正如您在上面看到的,我将 imgClass 值放置为 html 选项属性 value 以及显示的值。这是我随后用来搜索数据库的属性value

这是生成的 HTML 源代码:

<option value="Robin" s'="">Robin's</option>

很明显,当我使用 value 属性搜索数据库时,它会查找不存在的 Robin

我应该如何输入 ENUM 值,以及应该如何创建组合框以保持原始 ENUM 值的完整性?

另外,我不确定为什么生成的 HTML 中的 s' 后面有 ="",以及为什么显示的值是完美的。有什么想法吗?

最佳答案

第 1 部分可能非常简单:'a''b''a\'b' 的替代方案因此意思是相同的。 UI 确信在查询中将返回正确的字符串,而不是表定义。

对于第 2 部分,Nedret Recep 已为您提供了正确答案。另外,我想知道如何

echo "<option value='".$imgClass_row[imgClass]."'>"

可能会导致

<option value="Robin" s'="">

。我宁愿期待

<option value='Robin's'="">

这显然是错误的,但可以用 htmlspecialchars() 解决.

编辑:我找到了一个可能的解释:浏览器的 HTML 解析器可能应该归咎于此。与

<select id="s" onchange="alert(document.getElementById('s').innerHTML + ' value:' + document.getElementById('s').value)">
        <option value='Robin&apos;s'>a</option>
        <option value='Robin's'>b</option>
</select>

我使用 Firefox

<option value="Robin's">a</option>
<option value="Robin" s="">b</option>
value:Robin's

带有选项a

<option value="Robin's">a</option>
<option value="Robin" s="">b</option>
value:Robin

带有选项b 。但它是经过解析和重新组装之后的,显然不是 PHP 生成的代码。即便如此,轴 ' 又在哪里?在<option value="Robin" s'=""> .

关于php - 在 MySQL ENUM 值中使用撇号将填充 HTML 组合框以进行数据库搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7819509/

相关文章:

Mysql拆分字符串并选择结果

mysql - IF 语句中的 SELECT

javascript - 使用 jQuery AJAX 函数调用返回 PDF 的 php 文件

php - 一切都在 UTF8 上,但我仍然得到奇怪的字符,例如 �

javascript - 使用 jquery 函数选项 textarea 将 php 插入数据库时​​出错

sql - 关于哪些操作索引效果不佳或未使用

sql - 外部连接超过 1 个表

php - 添加 "sDom"后数据表未加载数据

使用 BCRYPT 的 PHP 散列添加不需要的字符

php - Dockerfile FROM vs Docker-compose IMAGE