Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在Symfony中访问数据库连接数据_Php_Mysql_Ajax_Symfony - Fatal编程技术网

Php 在Symfony中访问数据库连接数据

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

我是Symfony的新手,我有这个问题。我想访问数据库连接数据,在app/config/parameters.yml中,这是一个位于src/Myproject/MyBundle/Resources/public/query.php中的php文件。这只是为了运行查询。如果我运行这段代码,它会工作,但我想要更安全的东西

$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层。