PHP记录未插入数据库

时间:2015-10-16 16:13:46

标签: php mysql mysqli

您好,我是一名新的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();



        }

3 个答案:

答案 0 :(得分:3)

我认为您的问题是您正在混合使用OO(面向对象)和使用Dim strURL As String Dim ws as Excel.Application Set ws = Set WS = ActiveWorkbook.Sheets("Sheet1") strURL = "www.website.com/" & ws.Range("A1").Value msgbox (strURL) 的程序方式。

如果您的mysqli变量是通过$mysqli创建的,那么您使用OO方法,并且不应使用new mysqli(/* params here */);前缀函数。

如果mysqli_变量为$mysqli 然后你使用程序方法,而你没有mysqli_connect(/* params here */);对象在其上使用$mysqli

<强>更新

好的,正如您所说 - 您通过->创建了一个$mysqli对象。 然后,正如我所说new无法使用前缀函数。 你应该改变

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) {

答案 1 :(得分:0)

我假设$ txn_id是一个整数,你将它绑定为一个字符串。那会失败。 $ payment_status怎么样?那是一个字符串吗?请记住,mysql中的boolean类型也被视为小INT。

$ statement-&gt; bind_param(&#39; ssi&#39;,$ txn_id,$ payment_status,$ id); 将其更改为:&#39; isi&#39;或将其绑定到适当的类型。

同样正如@u_mulder指出的那样,你正在混合程序和面向对象的风格。

答案 2 :(得分:-1)

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."'");


        }
    }

之前发生过这种情况,发现这个问题非常麻烦。问题在于使用单引号而不是“你必须拥有”。