Я пытаюсь запустить сценарий, который примет 3 переменные с помощью «GET», а затем вернет результат обратно в действие, вызывающее сценарий. Я написал свой php-код и пытаюсь протестировать его с помощью почтальона, но каждый раз, когда я даю ему аргументы, он возвращает = неожиданно ''
вот мой php-код:
<?php
require_once 'connection.php';
header('Content-Type: application/json');
class User{
private $db;
private $connection;
function __construct(){
$this->db = new DB_connection();
$this->connection = $this->db->get_connection();
}
public function transaction($emailval, $merchantid, $amount){
$query= "select amount from wallet_user where email = '$emailval'";
$result = mysqli_query($this->connection, $query);
$row=$result->fetch_assoc();
$resultval = floatval($row['amount']);
//echo resultval;
if ($resultval >= $amount){
$sql = "Select * from wallet_merchant where merchant_id = '$merchantid'";
$resultm = mysqli_query($this->connection, $sql);
if (mysqli_num_rows($resultm) > 0) {
$query2 = "UPDATE finger.wallet_merchant SET amount = amount + $amount WHERE merchant_id= '$merchantid' ;";
$query3 = "UPDATE finger.wallet_user SET amount = amount - $amount WHERE email= '$emailval' ;";
$result2 = mysqli_query($this->connection, $query2);
$result3 = mysqli_query($this->connection, $query3);
$json['tsuccess'] = 'Transaction successful!';
echo json_encode ($json);
mysqli_close($this->connection);
}
}
else{
$json['amounterr'] = 'Please add more amount to your wallet!';
echo json_encode ($json);
mysqli_close($this ->connection);
}
}
}
$user = new User();
if (isset ($_GET['emailval'], $_GET ['merchant_id'], $_GET['amount'] )){
$emailval = $_GET['emailval'];
$merchantid = $_GET['merchant_id'];
$amount = floatval($_GET['amount']);
if (!empty ($emailval) && !empty($merchantid) && !empty($amount)){
$user->transaction($emailval, $merchantid, $amount);
}
else{
echo json_encode("Please enter both fields!");
}
}
?>
Я не понимаю, что мне здесь не хватает. Это не сценарий connection.php, который вызывает у меня какие-либо ошибки, потому что я запускаю на нем другие сценарии, и они работают нормально, что мне не хватает?
@KIKOSoftware Я тоже пробовал запустить его на сервере xampp, кроме синтаксической ошибки показать нечего.
Вероятно, следует частично удалить echo resultval;.
@NigelRen, это было просто для тестирования, откуда возникла ошибка, к сожалению, я каждый раз получал одну и ту же ошибку
Я предлагаю вам удалить header('Content-Type: application/json') или заменить его на text/plain и проверить сообщение об ошибке полный
Кроме того, если ваш ответ должен быть JSON, вам нужен только вывод один, закодированный JSON. Учитывая, что в вашем скрипте есть несколько точек, в которых он может что-то echo, ваш ответ имеет высокий шанс быть искаженным.
Вы должны изменить последний код на что-то вроде json_encode(["error" => "Please enter both fields!"]);.
@NigelRen почему? Обычная строка - это совершенно допустимый JSON
@Phil - может быть, но на всем протяжении кода все сообщения делаются по-разному, поэтому я больше смотрел на согласованность.






Проблема здесь echo resultval; Он создаст недопустимый json. Удалите это эхо из своего кода. Никогда не добавляйте вывод до возврата ant json, иначе это создаст проблему
<?php
require_once 'connection.php';
header('Content-Type: application/json');
class User{
private $db;
private $connection;
function __construct(){
$this->db = new DB_connection();
$this->connection = $this->db->get_connection();
}
public function transaction($emailval, $merchantid, $amount){
$query= "select amount from wallet_user where email = '$emailval'";
$result = mysqli_query($this->connection, $query);
$row=$result->fetch_assoc();
$resultval = floatval($row['amount']);
if ($resultval >= $amount){
$sql = "Select * from wallet_merchant where merchant_id = '$merchantid'";
$resultm = mysqli_query($this->connection, $sql);
if (mysqli_num_rows($resultm) > 0) {
$query2 = "UPDATE finger.wallet_merchant SET amount = amount + $amount WHERE merchant_id= '$merchantid' ;";
$query3 = "UPDATE finger.wallet_user SET amount = amount - $amount WHERE email= '$emailval' ;";
$result2 = mysqli_query($this->connection, $query2);
$result3 = mysqli_query($this->connection, $query3);
$json['tsuccess'] = 'Transaction successful!';
echo json_encode ($json);
mysqli_close($this->connection);
}
}
else{
$json['amounterr'] = 'Please add more amount to your wallet!';
echo json_encode ($json);
mysqli_close($this ->connection);
}
}
}
$user = new User();
if (isset ($_GET['emailval'], $_GET ['merchant_id'], $_GET['amount'] )){
$emailval = $_GET['emailval'];
$merchantid = $_GET['merchant_id'];
$amount = floatval($_GET['amount']);
if (!empty ($emailval) && !empty($merchantid) && !empty($amount)){
$user->transaction($emailval, $merchantid, $amount);
}
else{
echo json_encode("Please enter both fields!");
}
}
?>
Перед выводом json убедитесь, что нет ошибок и других echo.
Вы смотрели полученный файл json? Что на первой линии?