一度に二つのSQL文を実行する方法を調べております。
過去にほぼ同内容の質問をされている方(「PHP/MySQL PDOを使った複数のSQLを文を実行する処理」)がおり、この内容を参考にさせていただき、書いたプログラムが以下になります。
やりたいこととしては、データベースのレコードを削除して、削除した箇所から再度idを振りなおす、ということをやりたいです。
ほぼ同じことをやっていると思うのですが、上手くいきません。
色々調べてみましたが原因もわからないので、何か解決方法やアドバイスをいただけたらと思い質問させていただきました。
何卒よろしくお願いいたします。
PHP
1<?php 2 3require_once __DIR__ . '/database_conf.php'; 4 5 try { 6 //connect 7 $db = new PDO(PDO_DSN, DB_USERNAME, DB_PASSWORD); 8 $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 9 $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 10 11 12 //フォームからの値を取得 13 $Num = $_REQUEST['deleteNum']; 14 15 //データベースから削除 16 $db->beginTransaction(); 17 $stmt = $db->prepare("DELETE FROM movie_info WHERE id = :id"); 18 $stmt->bindValue(':id', $Num, PDO::PARAM_INT); 19 $stmt->execute(); 20 //作用した行数を返す。今回は削除された行数 21 $count = $stmt->rowCount(); 22 23 if ($count == 1) { 24 $stmt = $db->prepare("ALTER TABLE movie_info AUTO_INCREMENT = :id"); 25 $stmt->bindValue(':id', $Num, PDO::PARAM_INT); 26 $stmt->execute(); 27 $db->commit(); 28 } else { 29 $db->rollBack(); 30 } 31 } catch (PDOException $e) { 32 header('Content-type: text/plain; charset=UTF-8', true, 500); 33 exit($e->getMessage()); 34 } 35 36?>
回答3件
あなたの回答
tips
プレビュー