1

在 PHP/MySQL 脚本中,我正在读取 XLS 文件并根据一组规则检查它们是否存在错误,并向用户输出错误消息,以便他们知道要修复什么。大多数规则对于许多列都是通用的,因此错误消息中唯一改变的是列名或应检查的值。我不想在 PHP 中对消息进行硬编码,而是想从 mysql 表中提取它们,error_messages但也能够根据每一列更改它们。

示例:错误 1:“列‘名称’包含无效字符。” 错误 2:“列 'Surname' 包含无效字符。”

如果我存储“列 XXX 包含无效字符”。在 mysql 表中error_messages,如何通过仅将 XXX 更改为每个列名来显示它?

我可以使用 PHP 函数将 XXX 替换为任何字符串并输出消息,但这是最好的方法吗?有什么更聪明的方法吗?

4

2 回答 2

1

当您提出设计问题时,您通常会发现,有多种方法可以解决此问题。

一种解决方案是存储printf-format 字符串,如下所示: Column %s contains invalid chars.

但随后您会遇到存储大量冗余数据的问题。您可以将所有不同的错误放入另一个表中,然后将 ID 存储到原始表中的错误字符串中。这种方法将使您能够在一个位置更改错误字符串并让更改自动传播到任何地方。

另一种可能性是使用 MySQLENUM类型 ( doc ) 并在 PHP 中处理所有打印。

于 2013-06-01T14:52:23.373 回答
0

在您的数据库中存储为:

列“%s”包含无效字符。

并使用sprint()

$message = "Column '%s' contains invalid chars.";
$display = sprint($message, 'surname');
echo $display;
于 2013-06-01T14:49:34.963 回答