您好,我是一名新的PHP开发人员,而且我刚开始接受这种语言。我已经测试了我的代码并且没有出现任何错误,但出于某种原因,它不会将值添加到数据库中。
作为一名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();
}
答案 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."'");
}
}
之前发生过这种情况,发现这个问题非常麻烦。问题在于使用单引号而不是“你必须拥有”。