PDO查询不插入而不是抛出错误

时间:2017-08-01 01:45:55

标签: php mysql pdo

我正在使用PDO将数据插入表格并使用PDO更新我的数据库中的表格。

我正在使用过去曾多次使用过的声明,但由于某种原因,这次它对准备好的insert语句不起作用。它仅适用于更新声明。

声明如下:

        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

但不幸的是,这总是返回到TRUE而没有任何数据到数据库表。只更新,这应该是在插入我的数据库后完成的。

我已经尝试过对我能想到的陈述的每一个组合变化,但我仍然感到茫然。它也不会返回任何错误。

2 个答案:

答案 0 :(得分:2)

只需删除Execute语句中的冒号(:),如下所示,

以下代码为我工作(添加了测试值)。

$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';

答案 1 :(得分:1)

您似乎每次都覆盖$stmt变量,因此只有一个$stmt可以正常工作,最后一个更新可能会有效。

试试这可能就是你要找的东西:

<?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();
    }
}

?>