Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.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 带Docker的Zend框架,数据为空_Php_Mysql_Docker_Pdo - Fatal编程技术网

Php 带Docker的Zend框架,数据为空

Php 带Docker的Zend框架,数据为空,php,mysql,docker,pdo,Php,Mysql,Docker,Pdo,我试图用PHP、MariaDB和Apache将我的网站对接 实际上docker正在工作,内部没有错误,每个服务之间的通信良好 但是我在PDO(SQL语法)中遇到了一个错误 当我用print\r打印$auth时,我得到了一个无法完全打印的大数组,里面有些东西 当我打印$this->\u auth时,我只得到一个与程序其余部分不兼容的字符串 有助于理解以下内容的部分: Notice: Trying to get property of non-object in /var/www/html/mo

我试图用PHP、MariaDB和Apache将我的网站对接

实际上docker正在工作,内部没有错误,每个服务之间的通信良好

但是我在PDO(SQL语法)中遇到了一个错误

  • 当我用print\r打印$auth时,我得到了一个无法完全打印的大数组,里面有些东西

  • 当我打印$this->\u auth时,我只得到一个与程序其余部分不兼容的字符串

有助于理解以下内容的部分:

Notice: Trying to get property of non-object in /var/www/html/module/MyProject/src/MyProject/Model/MenuTable.php on line 33

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'AND d.TableRef = 'page') OR page.Publique = 1) AND Deconnecte = 1 ORDER BY `Ordr' at line 9' in /var/www/html/vendor/zendframework/zendframework/library/Zend/Db/Adapter/Driver/Pdo/Statement.php:240 Stack trace: #0 /var/www/html/vendor/zendframework/zendframework/library/Zend/Db/Adapter/Driver/Pdo/Statement.php(240): PDOStatement->execute() #1 /var/www/html/vendor/zendframework/zendframework/library/Zend/Db/TableGateway/AbstractTableGateway.php(233): Zend\Db\Adapter\Driver\Pdo\Statement->execute() #2 /var/www/html/vendor/zendframework/zendframework/library/Zend/Db/TableGateway/AbstractTableGateway.php(208): Zend\Db\TableGateway\AbstractTableGateway->executeSelect(Object(Zend\Db\Sql\Select)) #3 /var/www/html/vendor/zendframework/zendframework/library/Zend/Db/TableGateway/Abs in /var/www/html/vendor/zendframework/zendframework/library/Zend/Db/Adapter/Driver/Pdo/Statement.php on line 245
菜单行33

$idInscrit = (isset($idInscrit) ? $idInscrit : (isset($this->_auth) ? $this->_auth->IDInscrit : 0));
发生PDO错误的代码部分

                    ->where("(page.IDPage IN (
                                SELECT d.IDLigne
                                FROM inscrit i
                                JOIN lien_inscrit_role lir ON lir.IDInscrit = i.IDInscrit
                                JOIN lien_droit_role ldr ON ldr.IDRole = lir.IDRole
                                JOIN droit d ON d.IDDroit = ldr.IDDroit
                                JOIN page p ON p.IDPage = d.IDLigne
                                WHERE i.IDInscrit = $idInscrit
                                AND d.TableRef = 'page')"
                            . " OR page.Publique = 1)");
docker-compose.yml

version: '3.2'
services:
    mariadb:
        build: ./mariadb
        container_name: mariadb
        restart: always
        ports:
          - '3306:3306'
        environment:
          - MYSQL_DATABASE=${MYSQL_DATABASE}
          - MYSQL_USER=${MYSQL_USER}
          - MYSQL_PASSWORD=${MYSQL_PASSWORD}
          - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
          - TZ=Europe/London

    php:
        build: ./php-fpm
        container_name: php
        ports:
            - '9002:9000'
        links:
            - mariadb
        volumes:
          - .:/var/www/html/

    apache:
        build: .
        container_name: apache
        links:
          - mariadb
          - php
        volumes:
          - .:/var/www/html/
        ports:
          - '8085:80'

    phpmyadmin:
        image: phpmyadmin/phpmyadmin
        links:
            - mariadb
        ports:
            - '8183:80'
        environment:
            - MYSQL_USER=${MYSQL_USER}
            - MYSQL_PASSWORD=${MYSQL_PASSWORD}
            - PMA_HOST=mariadb
我在本地尝试过,当我打印$this->\u auth时,我得到了一个数组,这就是我为我的docker寻找的,它可以工作

我认为问题来自于数据库和服务器之间的框架或连接


我如何解决这个问题?

我们可以看到你的docker compose.yml吗?当然,我刚刚编辑了主题我们可以看到MentuTable第33行吗?啊,等等,它在下面吗?如果这是一个字符串,那么$this->\u auth->IDInscrit就是破坏代码的地方。可编辑的第33行是
$IDInscrit=(isset($IDInscrit)?$IDInscrit:(isset($this->\u auth)?$this->\u auth->IDInscrit:0))
当我在subject中输入时,我应该指定它是代码的哪一部分。$this->\u auth的字符串值是多少?
version: '3.2'
services:
    mariadb:
        build: ./mariadb
        container_name: mariadb
        restart: always
        ports:
          - '3306:3306'
        environment:
          - MYSQL_DATABASE=${MYSQL_DATABASE}
          - MYSQL_USER=${MYSQL_USER}
          - MYSQL_PASSWORD=${MYSQL_PASSWORD}
          - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
          - TZ=Europe/London

    php:
        build: ./php-fpm
        container_name: php
        ports:
            - '9002:9000'
        links:
            - mariadb
        volumes:
          - .:/var/www/html/

    apache:
        build: .
        container_name: apache
        links:
          - mariadb
          - php
        volumes:
          - .:/var/www/html/
        ports:
          - '8085:80'

    phpmyadmin:
        image: phpmyadmin/phpmyadmin
        links:
            - mariadb
        ports:
            - '8183:80'
        environment:
            - MYSQL_USER=${MYSQL_USER}
            - MYSQL_PASSWORD=${MYSQL_PASSWORD}
            - PMA_HOST=mariadb