Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何编写zend db事务_Php_Zend Db - Fatal编程技术网

Php 如何编写zend db事务

Php 如何编写zend db事务,php,zend-db,Php,Zend Db,我的代码有问题。当我试图执行时,它没有显示任何错误,但它也没有从数据库中删除 function delete(){ try { require('/inc/connect.php'); $publicId = $_POST["publicId"]; $select = $db->select() ->from('test', '*') ->where('test_public_id = ?', $publicId); $checkedPublicId = $db

我的代码有问题。当我试图执行时,它没有显示任何错误,但它也没有从数据库中删除

function delete(){
try {
require('/inc/connect.php');
$publicId = $_POST["publicId"];
$select = $db->select()
    ->from('test', '*')
    ->where('test_public_id = ?', $publicId);
$checkedPublicId = $db->fetchRow($select);
if(!$checkedPublicId){
    throw new Exception("No tour with that id was found");
}
$testId = $checkedPublicId['test_id'];
$db->beginTransaction();
$sql1 = $db -> query ("DELETE FROM folder_test WHERE test_id ='.$testId.'");
$sql2 = $db -> query ("DELETE FROM image WHERE test_id ='.$testId.'");
$sql3 = $db -> query ("DELETE FROM test_shares WHERE test_id ='.$testId.'");
$sql4 = $db -> query ("DELETE FROM test_stats WHERE test_public_id ='.$publicId.'");
$sql5 = $db -> query ("DELETE FROM slides WHERE test_id ='.$testId.'");
$sql6 = $db -> query ("DELETE FROM test WHERE test_public_id ='.$publicId.'");
$query = $db->commit();
}
catch(Exception $e) {
    $db->rollBack();
    throw new Exception($e);
}
}

您的查询已中断

$sql1 = $db -> query ('DELETE FROM folder_test WHERE test_id ='.$testId);
$sql2 = $db -> query ('DELETE FROM image WHERE test_id ='.$testId);
$sql3 = $db -> query ('DELETE FROM test_shares WHERE test_id ='.$testId);
$sql4 = $db -> query ('DELETE FROM test_stats WHERE test_public_id ='. $db -> quote($publicId));
$sql5 = $db -> query ('DELETE FROM slides WHERE test_id ='.$testId);
$sql6 = $db -> query ('DELETE FROM test WHERE test_public_id ='. $db -> quote($publicId));

我认为应该在try之前调用beginTransaction。当我在try之前编写beginTransaction时,出现致命错误:在非objectTry移动
$db->beginTransaction()上调用成员函数beginTransaction()和catch.Btw之外的所有行,这里不是bug吗
test_id='.$testId'“
?我不明白你的意思。你被指出的错误在哪里?其中$testId只是整数,$pulicId是字符和数字的混合体。为你更新了它:-)请注意它不是防注入的-确保不要使用$\u GET或$\u POST作为$publicId。问题是我使用$\u POST方法从另一个页面获取公共id