2016-08-04 16 views
0

そこに私は更新を作成して一つの条件で作成したいので、新しいレコードを作成すると自動的にデータが更新されます。複数のクエリとテーブルのPHPの挿入と更新

ここに私のPHP:

<?php 
require "dbconnection.php"; 

$a = array(); 
$a['transidmerchant'] = $_POST['TRANSIDMERCHANT']; 
$a['totalamount'] =$_POST['AMOUNT']; 
$a['words'] = $_POST['WORDS']; 
$a['payment_channel'] = $_POST['PAYMENTCHANNEL']; 
$a['session_id'] = $_POST['SESSIONID']; 
$a['payment_date_time'] = $_POST['REQUESTDATETIME']; 
$a['trxstatus'] = 'Requested'; 
$query = "INSERT INTO doku (transidmerchant,totalamount,words,payment_channel,session_id,payment_date_time,trxstatus) 
VALUES ('$_POST[TRANSIDMERCHANT]','$_POST[AMOUNT]','$_POST[WORDS]','$_POST[PAYMENTCHANNEL]','$_POST[SESSIONID]','$_POST[REQUESTDATETIME]','Requested')"; 

$sql = "UPDATE orders SET status='Paid' where id='$_POST[TRANSIDMERCHANT]'"; 
if(mysqli_query($con,$query)) { 
    mysqli_connect($con,$sql); 
    echo 1; 
}else{ 
    echo("Error description: " . mysqli_error($con)); 
} 

私のクエリ:$query$sql

$queryが成功であるとき、私は私の$sqlその更新をしたいが、ストアドプロシージャを作成します

+1

あなたは$クエリを実行することはありません、あなたはすべての$配列を使用することはありませんあなたが作成した変数、あなたのopen to SQLインジェクション。それ以外の質問は –

+0

MySql <> Sql Serverでどういうことなのかは分かりません。 –

+0

INSERT .. UP DUPLICATE KEYを参照してください。 – Strawberry

答えて

0
if (mysqli_query($con, $query) === true) { 
    mysqli_query($con, $sql); 
    echo 1; 
} else { 
    echo('Error description: ' . mysqli_error($con)); 
} 
0

を作成します挿入して更新します。サブクエリをチェックする通常のクエリを発行したり、ストアドプロシージャを作成したりすることができます。

以下のような手順をに作成し、それをsqlダイアログで実行します。設定が完了したら、それを実行します。

DELIMITER // 
CREATE PROCEDURE Payment 
(
a_transidmerchant int, 
a_atotalamount float, 
a_words varchar(200), 
a_payment_channel varchar(200), 
a_session_id int, 
a_payment_date_time datetime, 
etc... 
) 
BEGIN 
insert into doku(field_name1, field_name2, field_name3, field_name4) values(a_field1, a_field2, a_field3, a_field4); 
END // 
DELIMITER; 

を今、あなたのPHPファイルで、次の操作を行います。

if(isset($_POST[transidmerchantid])) /**** start a post check ****/ 
            //before you touch the db 
{ 
$con = mysqli_connect("localhost","user","pass","database"); 

//start defining variables 
$transidmerchantid = $_POST[name]; 
$totalamount = $_POST[course]; 
$words = $_POST[words]; 

//calling stored procedure - call values for parameters in stored procedure 
$sql = "CALL Payment('$transidmerchantid','$totalamount','$words')"; // <---- 

//in the order of operation, meaning once you have inserted the data, 
//you can update the table. you're automatically updating the table row 
//based on a successful insert, which is after calling the insert row   
//stored procedure. 

$result = mysqli_query($con,$sql); 
if($result) //insert successful. 
    echo "Record Added Successfully!"; 
    $sql = "UPDATE orders SET status='Paid' where id='$_POST[TRANSIDMERCHANT]'"; 
    mysqli_query($con,$query); 
}else{ 
    echo("Error description: " . mysqli_error($con)); 
}else{ 
    echo "Record Not added!"; //insert unsuccessful. 
} 

} /**** end post check ****/ 
関連する問題