2017-06-03 8 views
-2

データベースにデータを送信するために使用しているPHPスクリプトがあります。最初のステートメントが正常に実行された場合、第2のステートメントを実行することが可能です最初の文が正常に実行された場合、2番目の文を実行する

UPDATE accounts SET status='1' WHERE user_id='" . $_SESSION['user_id'] ."' 

:SQLステートメントが成功し、私はのように見えるUPDATE文を送信したい実行された場合は?はいの場合、どうすればいいですか?ここで

は、私は、データベースにデータを送信するために使用していたスクリプトです:

<?php 
session_start(); 
if (isset($_GET['id'])) 

$correct = true; 

$firstname = $_POST['firstname'] ; 
$lastname = $_POST['lastname'] ; 
$_SESSION['user_id']; 
$status = $_POST['status'] ; 

if($correct){ 
    $db = new PDO('mysql:host=localhost;dbname=db', 'root', ''); 

$query = "INSERT INTO users(firstname, lastname, user_id, status) VALUES (?, ?, ?, ?)"; 
$stmt = $db->prepare($query); 
$stmt->execute(array($firstname, $lastname, $_SESSION['user_id'], $status)); 

$id = $db->lastInsertId(); 
      header('Location: ../success.php?id='.$id); 
}else{ 
      header('Location: ../error.php'); 
} 
?> 

両方のSQLステートメントが正常に私が編集1ページに../success.php?id='.$id

をユーザーに送信したい実行している場合:

$query1 = "INSERT INTO users(firstname, lastname, user_id, status) VALUES (?, ?, ?, ?)" ; 
$stmt = $db->prepare($query1); 
$stmt->execute(array($firstname, $lastname, $_SESSION['user_id'], $status)); 


// the below code will execute if your insertion is successful 
$query2 = "UPDATE accounts SET status='1' WHERE user_id='" . $_SESSION['user_id'] ."'" ; 

// set the header location to go to another page 


$id = $db->lastInsertId(); 
      header('Location: ../success.php?id='.$id); 
}else{ 
      header('Location: ../error.php'); 
} 
+0

を行うことができます

if($correct){ $db = new PDO('mysql:host=localhost;dbname=db', 'root', ''); $query = "INSERT INTO users(firstname, lastname, user_id, status) VALUES (?, ?, ?, ?)"; $stmt = $db->prepare($query); $exec = $stmt->execute(array($firstname, $lastname, $_SESSION['user_id'], $status)); if($exec){ ....do update query // set the header location to go to another page } } 

または単にを確認することができますuが更新クエリを実行しようとしたのですか? –

+0

はい、更新クエリが動作しています – John

+0

私はここで$ query2-> execute()を見ることができません。 –

答えて

-1

できます。 documentationでこれについての詳細を読む$statement->execute();

if ($statement->execute()) { 
    // next statement 
} 

の戻り値を使用します。もし上記の例に加えて

を処理

エラーはエラーコードを確認することができます。ある点で何かが間違ってしまうため、何らかのエラー処理を行う必要があります。エラーコードを確認し、それに応じて何をすべきかを決めます。

小さな例:

if ($statement->errorCode() === "00000") { 
    // everything went well! 
} else { 
    throw new Exception("Something went wrong!"); 
} 

同様documentationでその詳細についてはこちらをご覧ください。

+0

私の答えに何が間違っているか教えてください。 –

+0

あなたのコードを試しました。プリンシパルは同じです。私がSQL文を入力すると、それは動作していません – John

+0

それは事実なら、何が動作していないのか詳細を教えてください。ちょうどそれが働いていないということは私たちがあなたを助けるのを助けることではない。 –

0

$stml->execute()は成功するとtrueを返します。そう、uはあなたがこの

if($correct){ 
     $db = new PDO('mysql:host=localhost;dbname=db', 'root', ''); 

     $query = "INSERT INTO users(firstname, lastname, user_id, status) VALUES (?, ?, ?, ?)"; 
     $stmt = $db->prepare($query); 
     $exec = $stmt->execute(array($firstname, $lastname, $_SESSION['user_id'], $status)) or die(); 

     // the below code will execute if your insertion is successful 
     ....do update query 
     // set the header location to go to another page 
    } 
+0

動作していません。私の最初の投稿で '編集1'を参照してください – John

+0

私のupvoteをしてください。あなたの答えは実際に働くでしょう。なぜこれが下落したのか理解していない。 –

関連する問題