-2

当 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 | <51651189.9080705@test.it> | 用户名 <test@test.it> | 测试 | 本地主机 |
    +---------------+--------------+--------------+--- --------+------------+------+-----+---- ----+--------------+------+--------------+--------- +-----------+-------------+----------+----------- -+--------------------------------+---------------- ------------+---------+-------------- -----+

通过 PHP MySQLi 接口执行查询时(例如:SELECT * from msgs),from_addr 字段仅显示第一部分(在本例中为“用户名”),但显示尖括号内的文本(“test@test.it” , 在这种情况下)。

目前,我通过在 mysql 查询中使用 REPLACE 语句来解决它,用方括号替换尖括号。但是,我想知道如何正确查询尖括号内的文本。

谢谢你们。

4

1 回答 1

1

from_addr如果您从查询中收到结果,则输出将在那里。

看看这个例子:

$string = '<hello world>';
echo $string;
echo htmlspecialchars('<hello world>');

而,echo $string将显示在源代码中,但被视为标签,因此不会显示“在屏幕上”。

使用htmlspecialchars()将更< >改为&lt; &gt;将显示“在屏幕上”。

看来您正在将此字段用于电子邮件,因此我不建议使用 保存到数据库htmlspecialchars,因为您希望电子邮件正确发送。

如果以上内容没有完全回答您的问题,并且您希望在数据库中查询电子邮件而不是“发送名称”,我建议使用LIKE

SELECT * FROM `msgs` WHERE `from_addr` LIKE '<%INSERT_EMAIL_ADDRESS%>'.

希望这可以帮助。

于 2013-04-12T17:45:32.040 回答