Php 使用include文件防止双重编码

Php 使用include文件防止双重编码,php,Php,我的尝试: 第一个文件(connopen.php) 最后一个文件(connclose.php) 这就抛出了一个错误(解析错误:语法错误,第11行/connopen.php中意外的$end),因为我在connopen.php上启动try{,在connclose.php上关闭 <?php $db->commit(); } catch (PDOException $e) { $db->rollBack(); ..some

我的尝试:

第一个文件(connopen.php)


最后一个文件(connclose.php)


这就抛出了一个错误(解析错误:语法错误,第11行/connopen.php中意外的$end),因为我在connopen.php上启动try{,在connclose.php上关闭

<?php
        $db->commit();
    } catch (PDOException $e) {
        $db->rollBack();
        ..some code to log errors
    }
    $db = null;
?>

如果有其他方法可以防止双重三重编码,connopen和connclose的源代码将非常感谢。谢谢,由于破坏了try语句,您在语法上出现了重大错误

连接文件应该是

  <?php
    try {
        $db = new PDO(DB_DSN, DBUSER, DB_PASSWORD);
        $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
    } catch (PDOException $e) {
        die('Cannot connecto to database!');
    }
当然。
只需去掉connclose.php、事务并尝试..捕获-您不需要它们。
因此,代码变得简单明了

第一个文件(connopen.php)


您的DB close文件尚未解析,因此您会收到一个sytax错误,因为您无法通过多个包含来分解语句。我还尝试删除您喜欢的第一个try catch,但结果是相同的
'connclose.php'
也有语法错误,因为它的try主体没有开头。您应该删除
包含('connclose.php');
也是。是的,我知道!这就是问题所在,另一种方法是在connopen.php上开始尝试,并在connclose.php上尝试关闭,以防止对catch进行双重编码,例如:)在回答更新中,我描述了我对优化代码和避免双重编码的正确模式的设想,这在许多流行的MVC框架中都有实现。错误是try在connopen.php中开始,在connclose.php中结束。无论如何,感谢这一改进。这不是“改进”。这是您需要的完整代码。
<?php
        $db->commit();
    } catch (PDOException $e) {
        $db->rollBack();
        ..some code to log errors
    }
    $db = null;
?>
  <?php
    try {
        $db = new PDO(DB_DSN, DBUSER, DB_PASSWORD);
        $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
    } catch (PDOException $e) {
        die('Cannot connecto to database!');
    }
<?php
$opt = array(
    PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::ATTR_EMULATE_PREPARES   => false,
);
$db = new PDO(DB_DSN, DBUSER, DB_PASSWORD, $opt);
<?php
    include('connopen.php');

    ...some code using SQL(SELECT, INSERT INTO, UPDATE, DELETE ....)