selimkoc adlı üyeden alıntı: mesajı görüntüle
Hocam ilk önce GPT'ye bir sor istersen problemini, aşağıdakini yazdı:

----

Kodunuzu incelediğimde, bazı olası sorunları tespit ettim. İşte dikkat etmeniz gereken bazı noktalar:
  1. $statement değişkenine sorgu çalıştırdıktan sonra veri almak için fetch işlemi yapmadınız. Bu nedenle $statement üzerinden doğrudan ordersProductID gibi bir değeri almaya çalıştığınızda hata alıyorsunuz. Bunun yerine sorguyu çalıştırdıktan sonra veriyi çekmelisiniz.
  2. İkinci bir önemli nokta, ikinci UPDATE işlemindeki değişken isimleri. İlk UPDATE sorgusunda :accountOrdersId olarak belirttiğiniz değişkeni ikinci UPDATE sorgusunda kullanmadınız. Bu nedenle bu değişkeni $merchant_oid olarak değiştirmeniz gerekebilir.
  3. Ayrıca, herhangi bir SQL hatası durumunda bunu belirtmek için hata işleme mekanizması eklemek iyi bir uygulamadır. Örneğin, $db->prepare ve $db->execute çağrılarından dönen sonuçları kontrol ederek hata olup olmadığını kontrol edebilir ve gerekirse uygun şekilde işleyebilirsiniz.
İşte düzeltilmiş bir versiyon:


$query = "UPDATE orders SET ordersStatus = :ordersStatus WHERE ordersNumber = :ordersNumber";
$statement = $db->prepare($query);
$statement->execute(['ordersStatus' => 2, 'ordersNumber' => $post['merchant_oid']]);

$merchant_oid = $post['merchant_oid'];

// ÜRÜN ÇEKME
$productID = $post['ordersProductID']; // Veriyi çek
$accountSQL = $db->prepare("SELECT accountID FROM account WHERE accountProductID = :accountProductID AND accountStatus = 1 LIMIT 1");
$accountSQL->execute(['accountProductID' => $productID]);
$accountDetail = $accountSQL->fetch(PDO::FETCH_ASSOC);

// Eğer ilgili kullanıcı bulunursa
if ($accountDetail) {
$accountId = $accountDetail['accountID'];

// account status update
$query1 = "UPDATE account SET accountStatus = 2, accountOrdersId=:accountOrdersId WHERE accountID = :accountID ";
$statement1 = $db->prepare($query1);
$success = $statement1->execute(['accountOrdersId' => $merchant_oid, 'accountID' => $accountId]);

if ($success) {
$query2 = "UPDATE orders SET ordersStatus = :ordersStatus WHERE ordersNumber = :ordersNumber";
$statement2 = $db->prepare($query2);
$statement2->execute(['ordersStatus' => 2, 'ordersNumber' => $merchant_oid]);
} else {
// Handle update failure
}
}
Bu düzeltmelerle, kodunuzun beklenen şekilde çalışması gerektiğini umuyorum.
Janevu adlı üyeden alıntı: mesajı görüntüle
<?php

if (!isset($post['merchant_oid'])) {
    // merchant_oid değeri yoksa hata ver veya işlemi durdur
    die('merchant_oid is required');
}

$merchant_oid = $post['merchant_oid'];

$query = "UPDATE orders SET ordersStatus = :ordersStatus WHERE ordersNumber = :ordersNumber";
$statement = $db->prepare($query);
$statement->execute(['ordersStatus' => 2, 'ordersNumber' => $merchant_oid]);

// ÜRÜN ÇEKME
$statement = $db->prepare("SELECT ordersProductID FROM orders WHERE ordersNumber = :ordersNumber");
$statement->execute(['ordersNumber' => $merchant_oid]);
$orderDetail = $statement->fetch(PDO::FETCH_ASSOC);

if ($orderDetail) {
    $productID = $orderDetail['ordersProductID'];
    $accountSQL = $db->prepare("SELECT accountID FROM account WHERE accountProductID = :accountProductID AND accountStatus = 1 LIMIT 1");
    $accountSQL->execute(['accountProductID' => $productID]);
    $accountDetail = $accountSQL->fetch(PDO::FETCH_ASSOC);

    // Eğer ilgili kullanıcı bulunursa
    if ($accountDetail) {
        $accountId = $accountDetail['accountID'];

        // account status update
        $query1 = "UPDATE account SET accountStatus = 2, accountOrdersId = :accountOrdersId WHERE accountID = :accountID";
        $statement1 = $db->prepare($query1);
        $success = $statement1->execute(['accountOrdersId' => $merchant_oid, 'accountID' => $accountId]);

        if ($success) {
            echo "Hesap ve sipariş durumu başarıyla güncellendi.";
        } else {
            // Handle update failure
            echo "Hesap durumu güncellenirken bir hata oluştu.";
        }
    } else {
        echo "İlgili hesap bulunamadı veya zaten güncel.";
    }
} else {
    echo "Sipariş detayları bulunamadı.";
}
?>
Teşekkür ederim oldu