我正在构建SugarCRm模块。它使用旧的基本MySQL函数,如PHP4天......
系统中的大多数模块访问一个数据库包装类,调用此Global变量然后使用它。
global $db;
$db->quote($some_SQL_Query_To_Execute);
现在我并不喜欢那样,所以在我自己的构造函数方法中的自定义模块类中,我正在做这个......
class MyModuleClassHereForSODemo
{
public $db;
public function __cnstructor($id){
$this->db = DBManagerFactory::getInstance();
}
public function insertDBRecordFunctionHERE($id){
$sql = "INSERT INTO `db_table_name` (
`topic_id`,
`project_id`,
`topic_subject`,
`topic_content`,
`date_created`,
`date_last_post`,
`created_by_user_id`,
`last_post_user_id`,
`posts_replies`
) VALUES(
NULL,
'$this->db->quote($project_id)',
'$this->db->quote($topic_subject)',
'$this->db->quote($topic_content)',
UTC_TIMESTAMP(),
UTC_TIMESTAMP(),
'$this->db->quote($created_by_user_id)',
'$this->db->quote($created_by_user_id)',
'0');";
$this->db->query($sql);
}
}
现在这是我遇到的问题,上面的SQL查询无效,因为我在我的变量上调用$this->db->quote()
...现在,如果我改为使用GLOBAL $ db,那是非常奇怪和令人沮丧的变量,然后我可以运行它而不是$db->quote()
并且它整天都在工作......它只要我在我自己的类$ db属性上运行quote()
方法就会破坏所有内容。 / p>
这可能是因为系统将它们视为与DB的不同连接,即使它是一个Singleton,应该是我想象的相同变量和对象....任何想法?
此外,我没有访问我正在访问的数据库类的所有代码,但我知道quote
方法只是调用mysql_real_escape_string