如何从静态数据创建动态字符串

时间:2013-06-01 14:47:42

标签: php mysql

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

实施例: 错误1:“列'名称'包含无效字符。” 错误2:“列'姓氏'包含无效字符。”

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

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

2 个答案:

答案 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;