-1

I am inserting data into tables and also updating tables in my database using PDO which I am admittedly not the most knowledgeable about.

I am using a statement that I have used many times in the past, but for some reason this time it doesn't work for the prepared insert statement. It only worked for the update statement.

The statement is as follows:

        error_reporting(E_ALL);
        ini_set('display_errors',1); 
        //fetching error
        $stmt = $pdo->prepare("INSERT INTO tb_beli (username, bank, norek, nama, ec, bitcoin, perfectmoney, fasapay, paket, saldo, amountbtc, phone, email, status, referer, iddb, date, ip, exp, unik,idph, upline, token) 
        VALUES(:username, :bank, :norek, :nama, :ec,  :bitcoin, :perfectmoney, :fasapay, :paket, :saldo, :amountbtc, :phone, :email, :status, :referer, :iddb, :date, :ip, :exp, :unik, :idph, :upline, :token)");
        $stmt ->execute(array(':username' => $kuriree, ':bank' => $bankee, ':norek' => $norekee, ':nama' => $namaee, ':ec' => $matauang,  ':bitcoin' => $bitcoinee, ':perfectmoney' => $pmee, ':fasapay' => $fasapayee, ':paket' => $paketzee, ':saldo' => $surabayae, ':amountbtc' => $convertbtc2, ':phone' => $phoneee, ':email' => $emailee, ':status' => $status1,':referer' => $kurirz,':iddb' => $idnyaz,':date' => $skrg,':ip' =>$laip ,':exp' => $exp,':unik' => $unikee,':idph' => $idnyaee,':upline' => $mangkosim,':token' => $unikeef ));
        //
        //echo  done  
        $stmt = $pdo->prepare("INSERT INTO tb_jual (username, bank, norek, nama, ec,  bitcoin, perfectmoney, fasapay, paket, saldo, amountbtc, phone, email, status, date, ip, idgh, token) 
        VALUES(:username, :bank, :norek, :nama, :ec,  :bitcoin, :perfectmoney, :fasapay, :paket, :saldo, :amountbtc, :phone, :email, :status, :date, :ip, :idgh, :token)");
        $stmt ->execute(array(':username' => $kurirz, ':bank' => $bankeem, ':norek' => $norekeem, ':nama' => $namaeem, ':ec' => $matauang,  ':bitcoin' => $bitcoineem, ':perfectmoney' => $pmeem, ':fasapay' => $fasapayeem, ':paket' => $paketzee, ':saldo' => $surabayae, ':amountbtc' => $convertbtc2, ':phone' => $phoneeem, ':email' => $emaileem, ':status' => $status2, ':date' => $skrg, ':ip' => $laip, ':idgh' => $idnyaz, ':token' => $unikeef));
        //
        //echo  done  
        $stmt= $pdo->prepare("UPDATE tb_ph SET saldo= (saldo - :saldo) where id=:id ");
        $stmt ->execute(array(':id' => $idnyaee, ':saldo' => $surabayae)); 
        //
        //echo  done  
        $stmt= $pdo->prepare("UPDATE tb_gh SET saldo= (saldo - :saldo) where id=:id");
        $stmt->execute(array(':id' => $idnyaz , ':saldo' => $surabayae));
        //echo  done  
        //array ends here for checkup

But unfortunately this is always returning to be TRUE without any data to the database tables. only updating, which was supposed to be done after the insertion into my database.

I have tried every combination changes to the statement that I could think of, but I am still at a loss. Also it doesn't return any error.

halfer
  • 19,824
  • 17
  • 99
  • 186
MK Smith
  • 111
  • 10

2 Answers2

2

Just remove the Colon(:) in Execute statement as follows,

Following code worked for me ( added test values).

$statement = $link->prepare("INSERT INTO tb_beli(username, bank, norek, nama, ec, bitcoin, perfectmoney, fasapay, paket, saldo, amountbtc, phone, email, status, referer, iddb, date, ip, exp, unik,idph, upline, token)
VALUES(:username, :bank, :norek, :nama, :ec,  :bitcoin, :perfectmoney, :fasapay, :paket, :saldo, :amountbtc, :phone, :email, :status, :referer, :iddb, :date, :ip, :exp, :unik, :idph, :upline, :token)");

$kuriree = 'bb';
$bankee  = 'cc'; 
$norekee  = 'cc'; 
$namaee  = 'cc'; 
$matauang  = 'cc';  
$bitcoinee  = 'cc';
$pmee  = 'cc';
$fasapayee  = 'cc';
$paketzee  = 'cc'; 
$surabayae  = 'cc'; 
$convertbtc2  = 'cc';
$phoneee  = 'cc';
$emailee  = 'cc'; 
$status1  = 'cc';
$kurirz  = 'cc';
$idnyaz  = 'cc';
$skrg  = 'cc';
$laip   = 'cc';
$exp  = 'cc';
$unikee  = 'cc';
$idnyaee  = 'cc';
$mangkosim  = 'cc';
$unikeef   = 'aa';

$ret = $statement->execute(array('username' => $kuriree, 'bank' => $bankee, 'norek' => $norekee, 'nama' => $namaee, 'ec' => $matauang,  'bitcoin' => $bitcoinee, 'perfectmoney' => $pmee, 'fasapay' => $fasapayee, 'paket' => $paketzee, 'saldo' => $surabayae, 'amountbtc' => $convertbtc2, 'phone' => $phoneee, 'email' => $emailee, 'status' => $status1,'referer' => $kurirz,'iddb' => $idnyaz,'date' => $skrg,'ip' =>$laip ,'exp' => $exp,'unik' => $unikee,'idph' => $idnyaee,'upline' => $mangkosim,'token' => $unikeef ));

if($ret)
    print '1 row Inserted';
else
    print 'Error in Inserting';
Masivuye Cokile
  • 4,754
  • 3
  • 19
  • 34
bala.s
  • 79
  • 3
1

it looks like you are overriding the $stmt variable every-time therefore only one $stmt will work, the last one which is update might work.

try this might be what you looking for :

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);

try {

    $pdo->beginTransaction();

    //fetching error
    if ($stmt = $pdo->prepare("INSERT INTO tb_beli (username, bank, norek, nama, ec, bitcoin, perfectmoney, fasapay, paket, saldo, amountbtc, phone, email, status, referer, iddb, date, ip, exp, unik,idph, upline, token) 
        VALUES(:username, :bank, :norek, :nama, :ec,  :bitcoin, :perfectmoney, :fasapay, :paket, :saldo, :amountbtc, :phone, :email, :status, :referer, :iddb, :date, :ip, :exp, :unik, :idph, :upline, :token)")) {

        if (!$stmt->execute(array(
            ':username' => $kuriree,
            ':bank' => $bankee,
            ':norek' => $norekee,
            ':nama' => $namaee,
            ':ec' => $matauang,
            ':bitcoin' => $bitcoinee,
            ':perfectmoney' => $pmee,
            ':fasapay' => $fasapayee,
            ':paket' => $paketzee,
            ':saldo' => $surabayae,
            ':amountbtc' => $convertbtc2,
            ':phone' => $phoneee,
            ':email' => $emailee,
            ':status' => $status1,
            ':referer' => $kurirz,
            ':iddb' => $idnyaz,
            ':date' => $skrg,
            ':ip' => $laip,
            ':exp' => $exp,
            ':unik' => $unikee,
            ':idph' => $idnyaee,
            ':upline' => $mangkosim,
            ':token' => $unikeef
        ))) {


            $error = $stmt->errorInfo();
            throw new Exception($error);
        }

        if ($stmt_two = $pdo->prepare("INSERT INTO tb_jual (username, bank, norek, nama, ec,  bitcoin, perfectmoney, fasapay, paket, saldo, amountbtc, phone, email, status, date, ip, idgh, token) 
        VALUES(:username, :bank, :norek, :nama, :ec,  :bitcoin, :perfectmoney, :fasapay, :paket, :saldo, :amountbtc, :phone, :email, :status, :date, :ip, :idgh, :token)")) {

            if (!$stmt_two->execute(array(
                ':username' => $kurirz,
                ':bank' => $bankeem,
                ':norek' => $norekeem,
                ':nama' => $namaeem,
                ':ec' => $matauang,
                ':bitcoin' => $bitcoineem,
                ':perfectmoney' => $pmeem,
                ':fasapay' => $fasapayeem,
                ':paket' => $paketzee,
                ':saldo' => $surabayae,
                ':amountbtc' => $convertbtc2,
                ':phone' => $phoneeem,
                ':email' => $emaileem,
                ':status' => $status2,
                ':date' => $skrg,
                ':ip' => $laip,
                ':idgh' => $idnyaz,
                ':token' => $unikeef
            ))) {


                throw new Exception($stmt_two->errorInfo());
            }
        }

        if ($stmt_three = $pdo->prepare("UPDATE tb_ph SET saldo= (saldo - :saldo) where id=:id ")) {

            if (!$stmt_three->execute(array(
                ':id' => $idnyaee,
                ':saldo' => $surabayae
            ))) {

                throw new Exception($stmt_three->errorInfo());
            }
        }

        if ($stmt_four->$pdo->prepare("UPDATE tb_gh SET saldo= (saldo - :saldo) where id=:id")) {

            if (!$stmt_four->execute(array(
                ':id' => $idnyaz,
                ':saldo' => $surabayae
            ))) {

                throw new Exception($stmt_four->errorInfo());
            }
        }

    }

    if ($pdo->commit()) {
        echo "Data Proccessing complete";
    } else {
        throw new Exception('Transaction commit failed.');
    }
}
catch (Exception $e) {
    try {
        // something went wrong, we have to rollback
        $pdo->rollback();
        // and display the error message
        echo "error : " . $e->getMessage();
    }
    catch (Exception $f) {
        // and display the error message
        echo "error" . $f->getMessage();
    }
}

?> 
Masivuye Cokile
  • 4,754
  • 3
  • 19
  • 34