素人でプログラムを楽しんでいる者です。プログラムコードの間違いがあると指摘されているのですが、私にはどこが間違っているのか分かりませんでした。お分かりになる方がおられましたらご指摘をお願いいたします。
if(filter_input(INPUT_POST,'●●●')){
$colom="●●●=:●●●,";
}
の文が沢山並んでいますが、SQL文に入るカラム名の数が決まっていないので、filter_inputの返り値がbool型なのでifを使い$colomに連結して最後にまとめてUPDATE SEI SET $colom の様に入れました。この部分が間違いなのでしょうか?それとも、自動コミットを使わずに$dbh->beginTransaction(); を2回使った部分が間違いなのでしょうか?UPDATEとDEIETEの二つのSQL文がありますが、これは1つのbeginTransaction();とcommit();の間に入れた方が良いのでしょうか?このプログラムは管理人しか触らないので、UPDATE中に誰かがDELETEするようなことは起きないので二つに分けても問題ないと思っているのですが。でもやはり一つにまとめるべきでしょうか?どこが間違っているのご指摘お願いいたします。
session_save_path('../sess'); session_start(); require '../function/main_function.php'; ////////////////////////トークン///////////////////////////// $token=token(); $_SESSION['token']=$token; ///////////////////個人データUPDATE//////////////////////////// if(filter_input(INPUT_POST,'no')){ $colom="NO=:NO,"; } if(filter_input(INPUT_POST,'simei')){ $colom.="SIMEI=:SIMEI,"; } if(filter_input(INPUT_POST,'id')){ $colom.="ID=:ID,"; } if(filter_input(INPUT_POST,'password')){ $colom.="PASSWORD=:PASSWORD,"; } if(filter_input(INPUT_POST,'address')){ $colom.="ADDRESS=:ADDRESS,"; } if(filter_input(INPUT_POST,'mail')){ $colom.="MAIL=:MAIL,"; } if(filter_input(INPUT_POST,'tel')){ $colom.="TEL=:TEL,"; } if(filter_input(INPUT_POST,'fu')){ $colom.="FU=:FU,"; } if(filter_input(INPUT_POST,'ky')){ $colom.="KY=:KY,"; } $colom=substr($colom,0,-1); try{ $dbh=DBconect(); $dbh->beginTransaction(); $stmt=$dbh->prepare("UPDATE SEI SET $colom WHERE TIME=:TIME"); ///////////////////////bindParam//////////////////////////////////// if(filter_input(INPUT_POST,'time')){ $stmt->bindParam(':TIME',$_POST['time'], PDO::PARAM_STR); } if(filter_input(INPUT_POST,'no')){ $stmt->bindParam(':NO',$_POST['no'], PDO::PARAM_STR); } if(filter_input(INPUT_POST,'simei')){ $stmt->bindParam(':SIMEI',$_POST['simei'], PDO::PARAM_STR); } if(filter_input(INPUT_POST,'id')){ $stmt->bindParam(':ID',$_POST['id'], PDO::PARAM_STR); } if(filter_input(INPUT_POST,'password')){ $stmt->bindParam(':PASSWORD',$_POST['password'], PDO::PARAM_STR); } if(filter_input(INPUT_POST,'address')){ $stmt->bindParam(':ADDRESS',$_POST['address'], PDO::PARAM_STR); } if(filter_input(INPUT_POST,'mail')){ $stmt->bindParam(':MAIL',$_POST['mail'], PDO::PARAM_STR); } if(filter_input(INPUT_POST,'tel')){ $stmt->bindParam(':TEL',$_POST['tel'], PDO::PARAM_STR); } if(filter_input(INPUT_POST,'fu')){ $stmt->bindParam(':FU',$_POST['fu'], PDO::PARAM_STR); } if(filter_input(INPUT_POST,'ky')){ $stmt->bindParam(':KY',$_POST['ky'], PDO::PARAM_STR); } ///////////////////////////////////////////////////////////////////////// $stmt->execute(); $dbh->commit(); $stmt = null; $dbh = null; }catch( Exception $e ){ $dbh->rollback(); } /////////////////////////削除(kozindata.phpより)///////////////////////////////////// if(filter_input(INPUT_GET,'sak')){ try{ $dbh=DBconect(); $dbh->beginTransaction(); $stmt=$dbh->prepare("DELETE FROM SEITO WHERE TIME=:TIME"); $stmt->bindParam(':TIME',$_GET['sak'], PDO::PARAM_STR); $stmt->execute(); $dbh->commit(); $stmt = null; $dbh = null; }catch( Exception $e ){ $dbh->rollback(); } } header('location:./kozindata.php'); コード
回答2件
あなたの回答
tips
プレビュー