使用包含文件来防止双重编码

时间:2013-04-14 16:30:10

标签: php

我的尝试:

第一个文件(connopen.php)

<?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!');
    }

    try {
        $db->beginTransaction();

其他文件(file1.php,file2.php ...)

<?php
    include('connopen.php');

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

    include('connclose.php');
?>

上一个文件(connclose.php)

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

这样就抛出了一个错误(解析错误:语法错误,第11行的/connopen.php意外的$ end),因为我在connopen.php上开始尝试{,我关闭了connclose .PHP

如果有另一种方法可以做类似的事情来防止双三重编码... connopen和connclose源代码将会很感激。感谢

2 个答案:

答案 0 :(得分:1)

由于破坏了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!');
    }

正确的模式是使用应用程序引导(设置,数据库和外部服务连接等)创建一个文件,该文件将脚本执行路由到不同的php脚本(file1.php,file2.php),根据URL解析结果

答案 1 :(得分:1)

不确定。
只需摆脱connclose.php,交易和try..catches - 你不需要它们 所以,代码变得简单明了

第一个文件(connopen.php)

<?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);

其他文件(file1.php,file2.php ...)

<?php
    include('connopen.php');

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