我通过JavaScript从前端表单收集数据并将其传递到我的PHP脚本以保存到数据库。有三个表格必须全部填充,否则无(有错误)。我将以下文本墙作为我当前的脚本(大大简化为便于阅读),但我知道不会 - 列名称拼写错误,应该引发错误,但是没有,另外两个表保存。交易疑难解答
任何人都可以指出我要去哪里错了吗?
//SAVE TO DB
$conn -> beginTransaction();
$errors = array();
//record edit
foreach($edits as $edit)
{
try
{
$q = $conn -> prepare(" INSERT INTO edits (col1, col2) VALUES (?,?) ");
$q -> execute(array($a, $b));
}
catch(PDOException $e)
{
$conn->rollback();
$errors['Edits'][] = $e->getMessage();
}
}
//record action
foreach($records as $id => $record)
{
if($haveExitingRecords)
{
//update existing record
try
{
$q = $conn -> prepare(" UPDATE records SET col1 = ? WHERE ID = ? ");
$q -> execute(array($a, $b));
}
catch(PDOException $e)
{
$conn->rollback();
$errors['Updates'][] = $e->getMessage();
}
}
else
{
//insert new record
try
{
$q = $conn -> prepare(" INSERT INTO records (col1) VALUES (?) ");
$q -> execute(array($a));
}
catch(PDOException $e)
{
$conn->rollback();
$errors['Inserts'][] = $e->getMessage();
}
}
//also record where x...
if($x !== 1)
{
try
{
//check for existing record
$q = $conn -> prepare(" SELECT ID FROM ifCases WHERE col1 = ? ");
$q -> execute(array($a));
$prev = $q -> fetch(PDO::FETCH_COLUMN);
if(!$prev)
{
$q = $conn -> prepare(" INSERT INTO ifCases (col1, col2) VALUES (?, ?) ");
$q -> execute(array($a, $b));
}
}
catch(PDOException $e)
{
$conn->rollback();
$errors['ifCases'][] = $e->getMessage();
}
}
else
{
try
{
//check for existing record
$q = $conn -> prepare(" SELECT ID FROM ifCases WHERE col1 = ? AND col2 = ? ");
$q -> execute(array($a, $b));
$prev = $q -> fetch(PDO::FETCH_COLUMN);
if($prev > 0)
{
try
{
//delete case
$q = $conn -> prepare(" DELETE FROM ifCases WHERE col1 = ? AND col2 = ? ");
$q -> execute(array($ $a, $b));
}
catch(PDOException $e)
{
$conn->rollback();
$errors['Delete ifCase'][] = $e->getMessage();
}
}
}
catch(PDOException $e)
{
$conn->rollback();
$errors['ifCases'][] = $e->getMessage();
}
}
}
if(empty($errors))
{
$conn->commit();
echo '{"success":"ok"}';
}
else
{
echo json_encode($errors);
}
你在连接上设置错误模式? '$ conn-> setAttribute(PDO :: ATTR_ERRMODE,PDO :: ERRMODE_EXCEPTION);' – meda