簡體   English   中英

PHP記錄未插入數據庫

[英]PHP record not inserting to database

嗨,我是一名新的PHP開發人員,其語言我才剛開始使用。 我已經測試了我的代碼,沒有收到任何錯誤,但是由於某種原因,它不會將值添加到數據庫中。

  • 測試語法錯誤
  • $ mysqli是連接的名稱
  • 經過字符串輸入測試,仍然無法執行

作為php學習者,我還應該采取哪些其他調試步驟?

if($payment_status=='Completed'){

        $txn_id_check = mysqli_query($mysqli,"SELECT `transaction_id` FROM `payment` WHERE `transaction_id`='$txn_id'");
        if(mysqli_num_rows($txn_id_check)!=1){

                    // add txn_id to db
                    $query = "INSERT INTO `payment` (`transaction_id`, `payment_status`, `users_id`) VALUES(?, ?, ?)";
                    $statement = $mysqli->prepare($query);
                    $statement->bind_param('ssi',$txn_id, $payment_status, $id);
                    if($statement->execute()){
                    print 'Success! ID of last inserted record is : ' .$statement->insert_id .'<br />'; 
                    }else{
                    die('Error : ('. $mysqli->errno .') '. $mysqli->error);
                    }
                    $statement->close();



        }

我想您的問題是您在混合使用OO(面向對象)和使用mysqli過程方法。

如果您的$mysqli變量是通過new mysqli(/* params here */); 那么您將使用OO方法,並且不應使用mysqli_前綴函數。

如果$mysqli變量是mysqli_connect(/* params here */); 那么您將使用過程方法,並且沒有$mysqli對象可用於->

更新。

好的,正如您所說-通過new創建一個$mysqli對象。 然后,正如我所說,不能使用mysqli_前綴函數。 你應該改變

$txn_id_check = mysqli_query($mysqli,"SELECT `transaction_id` FROM `payment` WHERE `transaction_id`='$txn_id'");

$txn_id_check = $mysqli->query('Your query here');
// now $txn_id_check stores mysqli_result

和:

if(mysqli_num_rows($txn_id_check)!=1) {

// use your mysqli_result to check number of rows
if($txn_id_check->num_rows != 1) {

我假設$ txn_id是一個整數,並且您將其綁定為字符串。 那會失敗。 那么$ payment_status呢? 那是繩子嗎? 請記住,MySQL中的布爾類型也被視為小型INT。

$ statement-> bind_param('ssi',$ txn_id,$ payment_status,$ id); 將其更改為:“ isi”或將其綁定到適當的類型。

就像@u_mulder指出的那樣,您正在混合過程和面向對象的樣式。

if($payment_status=='Completed'){

        $txn_id_check = mysqli_query($mysqli,"SELECT 'transaction_id' FROM 'payment' WHERE 'transaction_id'='$txn_id'");
        if(mysqli_num_rows($txn_id_check)!=1){

            //if($receiver_email=='fortunefilly@hotmail.com'){

                //if($payment_amount=='10.00' && $payment_currency=='GBP'){

                    // add txn_id to db
                    $query = "INSERT INTO 'payment' ('transaction_id', 'payment_status', 'users_id') VALUES(?, ?, ?)";
                    $statement = $mysqli->prepare($query);
                    $statement->bind_param('ssi',$txn_id, $payment_status, $id);
                    if($statement->execute()){
                    print 'Success! ID of last inserted record is : ' .$statement->insert_id .'<br />'; 
                    }else{
                    die('Error : ('. $mysqli->errno .') '. $mysqli->error);
                    }
                    $statement->close();
                    // update premium to 1 

                    //$update_premium = mysqli_query("UPDATE 'users' SET is_member ='1' WHERE 'id' ='".$id."'");


        }
    }

這在我之前發生過,發現問題很麻煩。 問題在於單引號而不是“您必須擁有”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM