[英]PHP record not inserting to database
嗨,我是一名新的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();
}
我想您的問題是您在混合使用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.