Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.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 在许多操作中使用mysql变量Symfony_Php_Mysql_Symfony - Fatal编程技术网

Php 在许多操作中使用mysql变量Symfony

Php 在许多操作中使用mysql变量Symfony,php,mysql,symfony,Php,Mysql,Symfony,我在访问之前设置的mysql变量时遇到问题 在单控制器方法中,我这样做: public function indexAction() { $em = $this->getDoctrine()->getManager(); /* @var $connection Connection */ $connection = $em->getConnection(); $connection->executeQ

我在访问之前设置的mysql变量时遇到问题

在单控制器方法中,我这样做:

public function indexAction()
    {
        $em = $this->getDoctrine()->getManager();
        /* @var $connection Connection */
        $connection = $em->getConnection();
        $connection->executeQuery('SET @user_id = 1;');

        return [];
    }
然而,在另一个例子中,我想得到这个值:

public function listAction(Request $r)
    {
        $em = $this->getDoctrine()->getManager();
        /* @var $connection Connection */
        $connection = $em->getConnection();

        var_dump($connection->executeQuery('SELECT @user_id;')->fetchColumn());exit;
    }
当以相同的方式转储并在创建后立即转储相同的变量时,此值存在。我需要这个变量,因为我有一个触发器,在其中我得到这个变量


我做错了什么?

由于mysql用户定义变量的工作方式,您试图实现的目标几乎是不可能的

用户定义的变量是特定于会话的。一个客户端定义的用户变量无法被其他客户端看到或使用。。。给定客户端会话的所有变量在该客户端退出时自动释放

例外情况如下:

(例外情况:有权访问性能模式用户变量线程表的用户可以查看所有会话的所有用户变量。)

您在示例中介绍的两个操作是两个不同的php进程,它们通常不共享mysql会话,因此它们不会共享mysql用户定义变量。我不知道您的主要目标是什么,但即使共享变量,如果您有多个用户,脚本也无法正常工作,因为在某些情况下,您的变量将被并发用户覆盖,例如:

id为1的用户访问索引操作并将变量@User_id设置为“1”,id为2的用户访问索引操作并将变量设置为“2”。id为1的用户访问listAction,变量将为“2”而不是“1”

我认为你应该重新考虑你的执行情况。如果你给我更多关于你目标的信息,也许我可以帮你提一些建议。在不知道更多细节的情况下,您实际需要的是使用用户会话在操作之间传递变量。像这样的

public function indexAction()
{
    $this->get('session')->set('user_id', $id);
    return [];
}

public function listAction(Request $r)
{
    $this->get('session')->get('user_id');
}
希望这有帮助

亚历山德鲁科索伊