Php 使用PDO查询时捕获错误
我有一部分代码导入.sql文件以这种方式执行:Php 使用PDO查询时捕获错误,php,mysql,database,pdo,try-catch,Php,Mysql,Database,Pdo,Try Catch,我有一部分代码导入.sql文件以这种方式执行: <?php $Server = "localhost"; $Db = "test"; $User = "root"; $Pass = ""; function exec_file($File_Path) { global $Server,$Db,$User,$Pass; $Con = new PDO("mysql:host=$Server;dbname=$Db",$User,$Pass); $Con->
<?php
$Server = "localhost";
$Db = "test";
$User = "root";
$Pass = "";
function exec_file($File_Path) {
global $Server,$Db,$User,$Pass;
$Con = new PDO("mysql:host=$Server;dbname=$Db",$User,$Pass);
$Con->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
try {
$Sql = file_get_contents($File_Path);
$Res = $Con->exec($Sql);
}
catch (PDOException $Ex) {
echo $Ex->getMessage();
}
}
这是因为您试图将整个文件作为一个查询执行,因此当它到达第一个错误时,它将停止执行。您可以使用事务并执行每一行而不是整个文件,以便捕获所有错误并提交。如何将sql文本分解为sql语句以逐个执行?一种方法是启动事务,然后分解文件上的查询,并执行foreach
。对于事务,执行它们所需的时间不会太长。也许您可以在分号“;”上分解文件,然后在得到的数组中循环。“分解”是疯狂的,行数据也包含这些分号