ホームページ > バックエンド開発 > PHPチュートリアル > トランザクションや PDO に詳しい人はいますか?常にロールバックしてデータを削除できない場合の解決策

トランザクションや PDO に詳しい人はいますか?常にロールバックしてデータを削除できない場合の解決策

WBOY
リリース: 2016-06-13 13:50:44
オリジナル
953 人が閲覧しました

トランザクションや PDO に詳しい人はいますか?常にロールバックされ、データは削除できません。
データベースの種類: sqlite
エラー プロンプトは表示されません。1 行ずつテストしましたが、実際にエラーはありません。なぜですか? ロールバックを繰り返し、データを削除できません
原因は何だと思いますか?
以下はコード例です:

PHP コード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
  $king->db->connect(); //连接数据库 $link为数据库连接句柄。 
 $king->db->link->beginTransaction();//回滚起始点 
 if($rs1=$king->db->getRows_number('%s_newsContent',"newsID in($newsID)")) 
 { 
  if($rs2=$king->db->query("delete from %s_newsContent where newsID in($newsID)")) 
  { 
   $s.="删除新闻内容成功![".$rs2."/".$rs1."条]<br />"; 
  } 
  else 
  { 
   lzj_message('删除新闻内容失败','javascript:history.go(-1)');    
  } 
 } 
 if($rs1=$king->db->getRows_number('%s_rss',"idValue in($newsID) and tableName='news' and idName='newsID'")) 
 { 
   
  if($rs2=$king->db->query("delete from %s_rss where tableName='news' and idName='newsID' and idValue in($newsID)")) 
  { 
    
   $s.="删除新闻RSS成功![".$rs2."/".$rs1."条]<br />"; 
  } 
  else 
  { 
   lzj_message('删除新闻RSS失败','javascript:history.go(-1)'); 
  } 
 } 
 if($rs=$king->db->query("delete from %s_news where newsID in(".$newsID.")")) 
 { 
  lzj_message("删除成功![".$rs."条]<br />".$s,$pageUrl);   
 } 
 else 
 { 
  lzj_message('删除新闻失败','javascript:history.go(-1)'); 
 }  
 $king->db->link->commit();//回滚结束点 


ログイン後にコピー


------解決策------- -------------
あなたの書き方に何か問題があるような気がします。
開始時に flag=true などのフラグを設定できます。

if( $flag ){
あなたの操作... .
} else{
......
$flag = false;
}
上記と同様に次の操作に進みます


最後に
if( $flag ){
トランザクションを送信
}else{

ロールバック
}
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート