在PHP / MySQL脚本中,我正在读取XLS文件,并根据一组规则检查错误,并向用户输出错误消息,以便他们知道要修复的内容。大多数规则对于许多列都是通用的,因此错误消息中唯一改变的是列名或应该检查的值。我没有在PHP中对消息进行硬编码,而是希望从mysql表error_messages
中提取它们,但也可以根据每一列更改它们。
实施例: 错误1:“列'名称'包含无效字符。” 错误2:“列'姓氏'包含无效字符。”
如果我存储“列XXX包含无效字符”。在mysql表error_messages
中,如何通过仅将XXX更改为每个列名来显示它?
我可以使用PHP函数将XXX替换为任何字符串并输出消息,但这是最好的方法吗?有更聪明的方法吗?
答案 0 :(得分:1)
正如您在提问设计问题时会发现的那样,有多种方法可以解决这个问题。
一种解决方案是存储printf
- 格式化字符串,如下所示:
Column %s contains invalid chars.
但是你遇到了存储大量冗余数据的问题。您可以将所有不同的错误放入另一个表中,然后将ID存储到原始表中的错误字符串中。这种方法可以让您能够在一个位置更改错误字符串,并让更改在任何地方自动传播。
另一种可能性是使用MySQL ENUM
类型(doc)并处理PHP中的所有打印。
答案 1 :(得分:0)
以数据存储在您的数据库中:
列'%s'包含无效字符。
并使用sprint()
$message = "Column '%s' contains invalid chars.";
$display = sprint($message, 'surname');
echo $display;