常量和mysql,最佳实践

时间:2010-06-20 21:46:08

标签: php mysql regex constants

我目前有一个已定义的常量列表和一个函数,该函数正则表示每个拉取的MySQL字符串,并查找CLIENT_NAME,LOCAL_API_ADDRESS等内容并自动更改它。

// several fields
define ('CLIENT_NAME', '...');
define ('LOCAL_API_ADDRESS', '...');
...

问题是,随着我的应用程序越来越大,我觉得这是非常低效的,并且必然会松散字符串(忘记在这里或那里使用正则表达式)。

你们怎么应对这个?

3 个答案:

答案 0 :(得分:4)

MySQL有User-defined variables since v3.23.6,但是他们......

  

...是特定于连接的。也就是说,其他客户端无法查看或使用由一个客户端定义的用户变量。当客户端退出时,将自动释放给定客户端连接的所有变量。

实际上,MySQL中没有用于存储常量的约定。

您可以将值存储在表中,但MySQL的REGEXP之类的东西可能需要动态SQL(使用MySQL的Prepared Statements)才能利用设置。

答案 1 :(得分:4)

老实说,除非你这么做很多次,否则这样做并不坏。许多模板引擎使用正则表达式搜索和替换。大部分开销是第一次加载正则表达式引擎。多个查询并不昂贵。

最好确保优化REGEX。

答案 2 :(得分:2)

小心处理这样的数据。如果从数据库中提取覆盖某些常量的数据,最终可能会出现安全问题!