我需要将应用程序从MySQL转换为SQL Server。
有许多涉及MySQL数据库功能的硬编码查询,例如 NOW(), LCASE(), MATCH()AGAINST() ,它在SQL Server中具有相同的功能,但具有不同的语法和结构。
我选择 Propel ,因为它似乎很容易使用。
我正在寻找一种模拟数据库功能的方法,例如 NOW() {MySQL} 和 GETDATE() { SQL Server} 通过扩展Propel类。
我认为是这样的:
$result = Function::NOW(); // MySQL
$result = Function::GETDATE(); // SQL Server
当函数接受参数时,例如 LCASE() {MySQL} 或 LOWER() {SQL Server} ,它可能是这样的:
$table = new MyTable();
$result = Function::LCASE($table->getName()); // MySQL
$result = Function::LOWER($table->getName()); // SQL Server
或
$table = new MyTable();
$result = Function::MD5($table->getPassword()); // MySQL
$result = Function::HASHBYTES('MD5', $table->getPassword()); // SQL Server
如果我可以在不同的数据库(MySQL和SQL Server)中创建具有相同目的的两个函数之间的完美解决方案。
因此,我可以使用 Function :: MD5(),而不是在我的PHP代码中使用 Function :: HASHBYTES(),因为它更简单,当我的应用程序连接到SQL Server数据库时,在内部调用 HASHBYTES()。