Php 在Symfony中访问数据库连接数据
我是Symfony的新手,我有这个问题。我想访问数据库连接数据,在app/config/parameters.yml中,这是一个位于src/Myproject/MyBundle/Resources/public/query.php中的php文件。这只是为了运行查询。如果我运行这段代码,它会工作,但我想要更安全的东西Php 在Symfony中访问数据库连接数据,php,mysql,ajax,symfony,Php,Mysql,Ajax,Symfony,我是Symfony的新手,我有这个问题。我想访问数据库连接数据,在app/config/parameters.yml中,这是一个位于src/Myproject/MyBundle/Resources/public/query.php中的php文件。这只是为了运行查询。如果我运行这段代码,它会工作,但我想要更安全的东西 $link = mysql_connect('localhost', 'root', ''); if (!$link) { die('Not connected : ' . m
$link = mysql_connect('localhost', 'root', '');
if (!$link) {
die('Not connected : ' . mysql_error());
}
$db_selected = mysql_select_db('database2', $link);
if (!$db_selected) {
die ('Can\'t use foo : ' . mysql_error());
}
您需要的是在控制器中为Ajax url创建一个路由和适当的操作,这样就不需要在Resources文件夹中创建php文件 1) 为Ajax生成路由
mybundle_ajaxrequest:
pattern: /ajaxcheck
defaults: { _controller: myBundle:Default:ajaxCheck }
2) 在默认控制器中创建一个正确的操作,并将所有后端代码放入其中
public function ajaxCheckAction() {
$host_name = $this->container->getParameter('database_host');
// do any logic you need here
$response = new Response();
$response->header->set('Content-Type', 'application/json');
$response->setContent(json_encode(array('host' => $host_name))); //return whatever you need
return $response;
}
3) 在jQuery请求中,需要将url设置为生成的路由
$(document).ready(function(){
// ajax setup
$.ajaxSetup({
url: '{{ path('mybundle_ajaxrequest') }}',
type: 'POST',
cache: 'false'
});
});
现在,您将能够在jQuery ajax中处理返回的json响应请记住,jQuery应该位于模板文件(twig template file)中。您想在运行时更改连接到的数据库,还是只想从parameters.yml获取配置信息?我认为在RESOURCES文件夹中定义查询不是一个好主意;这是由Symfony委员会决定的;您需要在控制器或EntityRepositoryHi中定义实体并执行查询。我知道这不是运行查询的标准方式,但我的项目中有一个指向该文件并运行它的jquey脚本。如果我把它指向一个控制器、存储库文件,它就不工作了。我发现这是最好的方法。你介意把你的jQuery脚本(至少是你指向这个php文件的部分)放到$(document.ready(function(){//ajax setup$.ajaxSetup({url:'{asset('bundles/myproject/query.php')},键入:'POST',cache:'false'));这对我来说是一个新概念,谢谢你的指点和你所有的工作。我会尝试在我的项目中实现它。@Liam我希望你能理解这个概念;因为这是我们在Symfony项目中创建ajax请求的方法;如果你有任何问题,请告诉我们。更多信息,请查看此内容:但使用条令,不要使用mysql函数。如果你不知道nt要创建实体,请至少使用DBAL层。