繁体   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