Php 使用include文件防止双重编码
我的尝试: 第一个文件(connopen.php)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
最后一个文件(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 ....)