2016-08-04 7 views
0

dort ich möchte Update und erstellen unter einer Bedingung, so wenn ich einen neuen Datensatz erstellen, automatisch aktualisieren meine Daten, wenn ich Erfolg habe neue machen.PHP einfügen und aktualisieren auf mehrere Abfrage und Tabelle

hier meine 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)); 
} 

meine Frage: $query und $sql

ich will meine $sql seine Aktualisierung, wenn $query Erfolg zu schaffen ist

+1

Sie nie $ Abfrage ausführen, die Sie nie alle $ ein Array verwenden Variablen, die Sie erstellen, Ihre offen für SQL-Injektion. Abgesehen davon bin ich nicht einmal sicher, was die Frage –

+0

MySql <> Sql Server ist. –

+0

Siehe INSERT .. ON DUPLICATE KEY .. – Strawberry

Antwort

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

Erstellen Sie eine gespeicherte Prozedur zum Einfügen dann aktualisieren. Möglicherweise möchten Sie etwas wie das tun, um Sie davon abzuhalten, reguläre Abfragen auszugeben, die Unterabfragen überprüfen und Sie zum Erstellen einer gespeicherten Prozedur bewegen.

Erstellen Sie Ihre Prozedur zu etwas ähnliches unten und führen Sie es in Ihrem SQL-Dialog. Sobald Sie fertig sind, führen Sie es:

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; 

nun in Ihre PHP-Datei, gehen Sie wie folgt vor:

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 ****/