【发布时间】:2013-04-05 08:16:25
【问题描述】:
当 VARCHAR 字段中的文本被尖括号('' 字符)包围时,我无法从 MySQL 数据库中获取数据。
让我更具体一点。这是我从中获取数据的表:
mysql> 描述味精; +---------------+---------+------+---- -+---------+--------+ |领域 |类型 |空 |钥匙 |默认 |额外 | +---------------+---------+------+---- -+---------+--------+ |分区标签 |整数(11) |否 |优先级 | 0 | | | mail_id |变量二进制(16) |否 |优先级 |空 | | |秘密ID |变量二进制(16) |是 | | | | | am_id | varchar(20) |否 | |空 | | | time_num | int(10) 无符号 |否 |穆尔 |空 | | | time_iso |字符(16) |否 | |空 | | |席位 | bigint(20) 无符号 |否 |穆尔 |空 | | |政策 | varchar(255) |是 | | | | |客户地址 | varchar(255) |是 | | | | |尺寸 | int(10) 无符号 |否 | |空 | | |原产地|字符(1) |否 | | | | |内容 |字符(1) |是 | |空 | | |夸类型 |字符(1) |是 | |空 | | |夸洛克 |变量二进制(255) |是 | | | | | dsn_sent |字符(1) |是 | |空 | | |垃圾邮件级别 |浮动 |是 | |空 | | | message_id | varchar(255) |是 |穆尔 | | | |从地址 | varchar(255) |是 | |空 | | |主题 | varchar(255) |是 | | | | |主持人 | varchar(255) |否 | |空 | | +---------------+---------+------+---- -+---------+--------+ mysql> select * from msgs LIMIT 1; +---------------+--------------+--------------+--- --------+------------+------+-----+---- ----+--------------+------+--------------+--------- +-----------+-------------+----------+----------- -+--------------------------------+---------------- ------------+---------+-------------- -----+ |分区标签 | mail_id |秘密ID | am_id | time_num | time_iso |席位 |政策 |客户地址 |尺寸 |原产地|内容 |夸类型 |夸洛克 | dsn_sent |垃圾邮件级别 | message_id |从地址 |主题 |主持人 | +---------------+--------------+--------------+--- --------+------------+------+-----+---- ----+--------------+------+--------------+--------- +-----------+-------------+----------+----------- -+--------------------------------+---------------- ------------+---------+-------------- -----+ | 0 | 0qJcjCXZM8K3 | 7a8Q1_crCzuj | 02085-01 | 1365578237 | 20130410T071717Z | 4 |我的网| 172.31.255.5 |第1246章是 |五 |问 | 0qJcjCXZM8K3 | N | -1 | |用户名当通过 PHP MySQLi 接口执行查询时(例如:SELECT * from msgs),from_addr 字段仅显示第一部分(在本例中为“用户名”),但不显示尖括号(在本例中为“test@test.it”)。
目前,我通过在 mysql 查询中使用 REPLACE 语句来解决这个问题,用方括号代替尖括号。但是,我想知道如何正确查询尖括号内的文本。
谢谢大家。
【问题讨论】:
-
你是在 HTML 页面中输出这个吗?因为如果您是,它将被解释为 HTML 标记 - 它会显示在源代码中。您可以在输出上执行 str_replace 以将
<和>与<和>交换 -
使用
mysql_real_escape_string()函数,它会帮助你 -
如果你在 PHP 中加载这个,看看这个函数:php.net/manual/en/function.htmlspecialchars.php。
标签: php html mysql xss brackets