Senkronize olmayan komutlar; bu komutu şimdi çalıştıramazsın


97

Mysqli aracılığıyla iki MySQL sorgusu çağıran PHP kodumu çalıştırmaya çalışıyorum ve "Komutlar senkronize değil; bu komutu şimdi çalıştıramazsınız" hatasını alıyorum.

İşte kullandığım kod

<?php
$con = mysqli_connect("localhost", "user", "password", "db");
if (!$con) {
    echo "Can't connect to MySQL Server. Errorcode: %s\n". Mysqli_connect_error();
    exit;
}
$con->query("SET NAMES 'utf8'");
$brand ="o";
$countQuery = "SELECT ARTICLE_NO FROM AUCTIONS WHERE upper(ARTICLE_NAME) LIKE % ? %";
if ($numRecords = $con->prepare($countQuery)) {
    $numRecords->bind_param("s", $brand);
    $numRecords->execute();
    $data = $con->query($countQuery) or die(print_r($con->error));
    $rowcount = $data->num_rows;
    $rows = getRowsByArticleSearch("test", "Auctions", " ");
    $last = ceil($rowcount/$page_rows);
}  else {

print_r($con->error);
}
foreach ($rows as $row) {
    $pk = $row['ARTICLE_NO'];
    echo '<tr>' . "\n";
    echo '<td><a href="#" onclick="updateByPk(\'Layer2\', \'' . $pk . '\')">'.$row['USERNAME'].'</a></td>' . "\n";
    echo '<td><a href="#" onclick="updateByPk(\'Layer2\', \'' . $pk . '\')">'.$row['shortDate'].'</a></td>' . "\n";
    echo '<td><a href="#" onclick="deleterec(\'Layer2\', \'' . $pk . '\')">DELETE RECORD</a></td>' . "\n";
    echo '</tr>' . "\n";
}
function getRowsByArticleSearch($searchString, $table, $max) {
    $con = mysqli_connect("localhost", "user", "password", "db");
    $recordsQuery = "SELECT ARTICLE_NO, USERNAME, ACCESSSTARTS, ARTICLE_NAME, date_format(str_to_date(ACCESSSTARTS, '%d/%m/%Y %k:%i:%s'), '%d %m %Y' ) AS shortDate FROM AUCTIONS WHERE upper(ARTICLE_NAME) LIKE '%?%' ORDER BY str_to_date(ACCESSSTARTS, '%d/%m/%Y %k:%i:%s')" . $max;
    if ($getRecords = $con->prepare($recordsQuery)) {
        $getRecords->bind_param("s", $searchString);
        $getRecords->execute();
        $getRecords->bind_result($ARTICLE_NO, $USERNAME, $ACCESSSTARTS, $ARTICLE_NAME, $shortDate);
        while ($getRecords->fetch()) {
            $result = $con->query($recordsQuery);
            $rows = array();
            while($row = $result->fetch_assoc()) {
                $rows[] = $row;
            }
            return $rows;
        }
    }
}

Bunu okumaya çalıştım ama ne yapacağımdan emin değilim. Mağaza sonucu ve ücretsiz sonuç hakkında okudum, ancak bunları kullanırken hiçbir fark yaratmadı. Bu hatanın tam olarak hangi noktada ortaya çıktığından emin değilim ve neden kaynaklandığını ve nasıl düzeltileceğini bilmek istiyorum.

Hata ayıklama ifadelerime göre, yakınlardaki sql sözdizimimdeki bir hata nedeniyle countQuery için ilk if döngüsü girilmiyor bile '% ? %'. Ancak *, bir LIKE yan tümcesine göre sınırlandırmaya çalışmak yerine yalnızca seçersem, yine de eşitleme hatası dışında komutu alıyorum.

Yanıtlar:


115

Mysqli varsayılan olarak arabelleğe alınmamış sorgular kullandığından aynı anda iki sorgu olamaz (hazırlanmış ifadeler için; vanilya için tersidir mysql_query). Ya ilkini bir diziye getirebilir ve ondan geçebilir ya da mysqli'ye sorguları arabelleğe almasını söyleyebilirsiniz (kullanarak $stmt->store_result()).

Ayrıntılar için buraya bakın.


3
Katılıyorum, mysqli biraz beyin hasarı. O does olsa PDO MySQL sürücüsü ile doğru olanı yapmak.

17
Sen edebilirsiniz iki eşzamanlı sorguları var - sadece çalıştırmak için gereken $stmt->store_result();senin tepkisi o daha net yapmak gerektiğini düşünüyorum.
Gölge

3
Bu bilgiyi bulmam yaşlarımı alıyor - kolayca nerede gösterilmiyor. Teşekkürler. Sorgularımı $select_stmt->close();bölmek için
ayırıyorum

@flussence, "mysqli'nin ön tanımlı olarak arabelleğe alınmamış sorgular kullandığını" belirttiniz. Öyleyse, başka türlü olmasını nasıl sağlayabiliriz?
Pacerier

1
Garip göründüğünü biliyorum, ancak mysqli_query ile bir yabancı anahtarı ihlal eden bir sorgu yürütürken bu hatayı aldım ... bu yüzden eğer bu herhangi birinin başına gelirse, INSERT sorgunuzun herhangi bir yabancı anahtarı ihlal etmediğini iki kez kontrol edin
lucaferrario

35

Bu sorunu C başvurumda çözdüm - işte böyle yaptım:

  1. Mysql forumlarından alıntı yapmak:

    Bu hata , sorgunuzu uygulama içinde noktalı virgül sınırlayıcıyla sonlandırdığınızda ortaya çıkar . Bir sorguyu komut satırından veya sorgu tarayıcısından çalıştırırken noktalı virgül sınırlayıcıyla sonlandırmanız gerekse de, sınırlayıcıyı uygulamanızın içindeki sorgudan kaldırın.

  2. Sorgumu çalıştırdıktan ve sonuçlarla [C API: mysql_store_result()] uğraştıktan sonra , iki veya daha fazla select ifadesi gibi birden çok SQL ifadesi yürütme yoluyla (sonuçlarla uğraşmadan arka arkaya) meydana gelen potansiyel olarak bekleyen sonuçları yineliyorum.

    Gerçek şu ki, prosedürlerim birden fazla sonuç döndürmüyor, ancak veritabanı ben çalıştırana kadar bunu bilmiyor: [C API: mysql_next_result()]. Bunu sıfırdan farklı olana kadar bir döngüde yapıyorum (iyi ölçü için). Bu, mevcut bağlantı işleyicisinin başka bir sorgu yürütmenin uygun olduğunu anladığı zamandır (bağlantı ek yükünü en aza indirmek için işleyicilerimi önbelleğe alıyorum).

    Kullandığım döngü bu:

    for(; mysql_next_result(mysql_handler) == 0;) 
      /* do nothing */;
    

PHP bilmiyorum ama eminim benzer bir şeye sahiptir.


13
Bu benim içindi. PHP'de ekledim: while (mysqli_next_result ($ con));
Josh

Sorunumu çözen cevap için teşekkürler. Sınırlayıcıyı kaldırdım ve işe yarıyor. Sonuçlarımı serbest bırakmadım (getirmedim) veya saklamadım, ancak imleci kapattım ve bir sorgu ifadesini bitirdiğimde yeniden oluşturdum.
Chen Xie

@Josh, eski mysqluzantıda bunu nasıl yapabilirim ?
Pacerier

1
Sorgunun sonundaki noktalı virgülün kaldırılması, Python MySQLdb kullanırken "Komutlar senkronize değil; bu komutu şimdi çalıştıramazsınız" sorununu düzeltti.
Genome

17

Bugün de aynı sorunu yaşadım, ancak yalnızca saklı bir yordamla çalışırken. Bu, sorgunun çoklu sorgu gibi davranmasını sağlar, bu nedenle başka bir sorgu yapmadan önce mevcut diğer sonuçları "tüketmeniz" gerekir.

while($this->mysql->more_results()){
    $this->mysql->next_result();
    $this->mysql->use_result();
}

Bu önemli bir noktadır: saklı yordamlar, SP'deki kodun oluşturabileceği herhangi bir sonuç kümesinin üzerinde ve üzerinde bir sonuç kümesi döndürür. Bunu halletmeniz veya şu hatayı almanız gerekir: stackoverflow.com/a/2315229/4495850
Richard

11

$ Mysqli-> query'i kullanmadan önce her seferinde bu işlevi çağırıyorum saklı yordamlarla da çalışır.

function clearStoredResults(){
    global $mysqli;

    do {
         if ($res = $mysqli->store_result()) {
           $res->free();
         }
        } while ($mysqli->more_results() && $mysqli->next_result());        

}

6

Bir kez kullandın

stmt->execute();

Sen OLABİLİR başka bir sorgu kullanmak kapatın.

stmt->close();

Bu sorun beni saatlerce avlıyordu. Umarım sizinkini düzeltir.


2
İfadenin kapatılması gerekli değildir. @Stalinbeltran'ın yukarıda cevapladığı gibi, bir açıklama hazırlamadan önce bir ifadenin sonucunu "tüketmemiz" gerekiyor. Yani, $stmt1->execute(); $stmt2=$conn->prepare(...)bu hatayı $stmt1->execute(); $result1=$stmt1->get_result(); $stmt2=$conn->prepare(...)verirdi , ancak gayet iyi çalışırdı.
Jay Dadhania

Kardeşim teşekkür ederim bana yardımcı oldu. Bunu ve şunu söyleyen herkes f, ilkini kapatmadan önce iki kez mysqli_prepare kullandım. İşe yarıyor.
abhinash Majhi

3

CodeIgniter kullanıyorum. Bir sunucu tamam ... bu muhtemelen daha eski ... Neyse kullanıyor

$this->db->reconnect();

Onu düzeltti.


7
Bu sorunu nasıl ele alıyor?
Jeremy J Starcher

4
@Norman, Bu sorunu "çözmez". Sadece tüm bağlantıyı atarak ve yeniden bağlanarak bunu önler . Bu, performans açısından hiç mantıklı değil.
Pacerier

1

Sorun, MySQL API'lerinin çoğunun üzerine kurulu olduğu MySQL istemci C kitaplığıdır. Sorun şu ki, C kütüphanesi sorguların eşzamanlı yürütülmesini desteklemiyor, dolayısıyla bunun üzerine inşa edilen tüm API'ler de desteklemiyor. Arabelleğe alınmamış sorgular kullanıyor olsanız bile. Eşzamansız MySQL API'nin yazılmasının bir nedeni budur. Bu TCP kullanarak MySQL sunucusu ve tel protokolü ile doğrudan iletişim kurar gelmez eşzamanlı sorguları destekler.

Çözümünüz, ya algoritmayı değiştirerek ikisinin birden aynı anda ilerlemesine gerek kalmaması ya da onları tamponlu sorgular kullanacak şekilde değiştirmektir ki bu muhtemelen C kitaplığındaki varoluşlarının orijinal nedenlerinden biridir (diğeri bir tür imleç sağlayın).


1
Her ikisinin de aynı anda yürütülmesine ihtiyacım yok, countQuery'nin ikinci sorgumdan önce tamamıyla bitirmesine sevindim, ancak countQuery'nin ilerlemesini nasıl durduracağımdan emin değilim

CountQuery'den herhangi bir veri almıyorsunuz, bu yüzden hala 'devam ediyor'. Ya tüm satırları alın ya da SELECT COUNT (ARTICLE_NO) olarak değiştirin ve o satırı alın. Ardından ikinci sorgunuz çalışacaktır.
staticsan

"Eşzamansız MySQL API" dediğinizde, hangi API'den bahsediyorsunuz? Ayrıca, senin sonucuna ulaşamıyorum. Bu "sorun", API'nin eşzamansız olmasına gerek kalmadan çözülebilir.
Pacerier

1
Dürüst olmak gerekirse @Pacerier Ben de ne demek istediğimi artık tam olarak bilmiyorum! MySQL bağlantısında altı yılda çok şey oldu, bu yüzden bahsettiğimi düşündüğüm her şey muhtemelen yeniden adlandırıldı ve / veya başka bir yeni sürücüye dahil edildi.
staticsan

1

Bu sorunu çözmek için kullanmadan önce sonuç verilerini kaydetmeniz gerekir

$numRecords->execute();

$numRecords->store_result();

bu kadar


1

Başka bir neden: store_result () iki kez çağrılamaz.

Örneğin, aşağıdaki kodda Hata 5 yazdırılmıştır.

<?php

$db = new mysqli("localhost", "something", "something", "something");

$stmt = $db->stmt_init();
if ($stmt->error) printf("Error 1 : %s\n", $stmt->error);

$stmt->prepare("select 1");
if ($stmt->error) printf("Error 2 : %s\n", $stmt->error);

$stmt->execute();
if ($stmt->error) printf("Error 3 : %s\n", $stmt->error);

$stmt->store_result();
if ($stmt->error) printf("Error 4 : %s\n", $stmt->error);

$stmt->store_result();
if ($stmt->error) printf("Error 5 : %s\n", $stmt->error);

(Bu, orijinal örnek kodla ilgili olmayabilir, ancak bu hataya yanıt arayan kişilerle ilgili olabilir.)


1

İşte SORUNUM Neydi !!!

Param bağlama "dinamik" idi, dolayısıyla bind_param'ı kullanmak için verilerin parametrelerini ayarlayan bir değişkenim vardı . Yani bu değişken yanlıştı ama "yanlış param verisi" gibi bir hata atmak yerine "uyumsuz bla bla bla" diyor ve kafam karıştı ...


0

Sanırım sorun, işlevde yeni bir bağlantı kuruyor ve sonunda onu kapatmıyorsunuz. Neden mevcut bağlantıyı geçip yeniden kullanmayı denemiyorsunuz?

Bir başka olasılık da, bir süre döngünün ortasında geri dönüyor olmanızdır. O dış getirmeyi asla tamamlamazsınız.


1
$ Con'u global yaparsam (bu kötü bir uygulamadır, ancak sizin açıkladığınız gibi çalışmalıdır) yine de aynı hataya sahibim.

1
Küresel bir bağlantımın kötü bir uygulama olduğunu düşünmüyorum
Mathieu J.

0

Tüm parametreleri doğru yazıp yazmadığınızı kontrol edin. Tanımlanan ve daha sonra işleve aktarılan parametrelerin miktarı farklıysa aynı hatayı atar.


0

Bu orijinal soruyla ilgili değil, ancak aynı hata mesajını aldım ve bu ileti dizisi Google'daki ilk isabet oldu ve Sorunun ne olduğunu anlamam biraz zaman aldı, bu nedenle başkaları için yararlı olabilir:

mysqli kullanmıyorum, hala mysql_connect kullanıyorum bazı basit sorgularım vardı, ancak BİR sorgu diğer tüm sorguların aynı Bağlantı içinde başarısız olmasına neden oldu.

Mysql 5.7 ve php 5.6 kullanıyorum, veri tipi "JSON" olan bir tablom var. Açıkçası, php sürümüm mysql'den gelen dönüş değerini tanımadı (php, yerleşik mysql modülü çok eski olduğu için JSON Biçimi ile ne yapacağını bilmiyordu (en azından düşünüyorum)

şimdilik JSON-Field-Type'ı Text olarak değiştirdim (şimdilik yerel mysql JSON-işlevselliğine ihtiyacım yok) ve her şey yolunda gidiyor


0

Verileri almak için Arabelleğe Alınmış veya Arabelleğe Alınmamış sonuç kümesini kullanıyorsanız, tüm verileri aldıktan sonra önce getirilen verileri bellekten temizlemeniz gerekir . Alınan belleği temizleyene kadar aynı bağlantıda başka bir MYSQL prosedürü yürütemezsiniz. Aşağıdaki işlevi komut dosyanızın sağ ucuna ekleyin, böylece sorunu çözecektir

$numRecords->close(); or $numRecords->free(); // This clears the referencing memory, and will be ready for the next MYSQL fetch

PHP belgelerinden referans


1
Bazı kayıtlara ihtiyacınız yoksa , ilk etapta onları seçmemelisiniz. Onları serbest bırakmak yerine, onları hiç seçmeyin. Ve eğer durum böyle değilse ve seçilen tüm kayıtları getirdiyseniz, bu durumda hiçbir şekilde böyle bir hata olmayacak ve close () veya free () çağırmaya gerek kalmayacaktır. Depolanan prosedürler itibariyle, yukarıdaki cevaplarda açıklanan daha az barbarca bir yöntem var
Ortak

0

Doctrine DBAL QueryBuilder kullanarak bu hatayla karşılaştım.

QueryBuilder ile sütun alt seçimlerini kullanan ve yine QueryBuilder ile oluşturulan bir sorgu oluşturdum. Alt seçimler yalnızca aracılığıyla oluşturuldu $queryBuilder->getSQL()ve çalıştırılmadı. Hata, ikinci alt seçim oluşturulurken meydana geldi. $queryBuilder->execute()Kullanmadan önce her alt seçimi geçici olarak çalıştırarak $queryBuilder->getSQL(), her şey çalıştı. Sanki, $queryBuilder->connectionher alt seçimdeki yeni QueryBuilder örneğine rağmen, halihazırda hazırlanmış SQL'i yürütmeden önce yeni bir SQL oluşturmak için bağlantı geçersiz durumda kalıyor gibidir.

Çözümüm, alt seçimleri QueryBuilder olmadan yazmaktı.


0

ODBC kullanıyorum ve bu düzeltme benim için çalışıyor: ODBC -> Sistem DSN sekmesi -> veri kaynağımı yapılandırmak için çift tıklayın -> ayrıntılar -> İmleçler sekmesi -> İşareti kaldır [Yalnızca ileri önbelleğe alma sonuçlarını önbelleğe alma] - > Tamam'ı tıklayın


0

Sık sık bu hataya çarptım ve her zaman phpmyadmin veya SQL Workbench'te hata ayıklama yaptığım bir saklı yordamı çalıştırdığımda (php mysqli ile bağlantı kurarak çalışıyorum).

Hata, hata ayıklamanın, değişkenlerin durumunu vb. Anlatmak için koddaki stratejik noktalara SELECT ifadelerinin eklenmesini içermesinden kaynaklanır. Bu istemci ortamlarında birden çok sonuç kümesi üreten bir saklı yordamı çalıştırmak sorun değil, ancak " Php'den çağrıldığında komutlar senkronizasyon dışı "hatası. Çözüm, her zaman hata ayıklama seçimlerini yorumlamak veya kaldırmaktır, böylece prosedür yalnızca bir sonuç kümesine sahip olur.


0

Sadece referans için ben hem karıştırma bu sorun vardı multi_queryve queryaynı kodda:

$connection->multi_query($query);
...
$connection->query($otherQuery);

Okuduklarım için beklemede olan tüketilmemiş sonuçlar vardı, bu nedenle belirtilen hataya neden oldu.

Tüm sonuçlarını tüketen bir döngü ile çözdüm multi_query:

$connection->multi_query($query);
while ($connection->next_result()); // <--- solves the problem
...
$connection->query($otherQuery);

Benim durumumda multi_querynerede ekler tüm sorgular bu yüzden sonuçların kendisiyle ilgilenmedim.


-1

Benim sorunum, önce hazırla ifadesini kullanıyordum ve sonra aynı sayfada mysqli sorgusunu kullanıyordum ve "Komutlar senkronize değil; bu komutu şimdi çalıştıramazsınız" hatasını alıyordum. Hata, yalnızca ifadeyi hazırlayan kodu kullandığım zamandı.

Yaptığım şey soruyu kapatmaktı. ve işe yaradı.

mysqli_stmt_close ($ stmt);

Benim kodum

get_category.php (burada hazırla ifadesini kullanarak)

    <?php


    global $connection;
    $cat_to_delete =    mysqli_real_escape_string($connection, $_GET['get'] );

    $sql = "SELECT category_name FROM categories WHERE category_id = ? ;";


    $stmt = mysqli_stmt_init($connection);

    if (!mysqli_stmt_prepare($stmt, $sql))
        $_SESSION['error'] = "Error at preaparing for deleting query. mysqli_stmt_error($stmt) ." & redirect('../error.php');

    mysqli_stmt_bind_param($stmt, 's', $cat_to_delete);

    if (!mysqli_stmt_execute($stmt))
        $_SESSION['error'] = "ERror at executing delete category ".mysqli_stmt_error($stmt) &
            redirect('../error.php');


    mysqli_stmt_bind_result($stmt, $cat_name);

    if (!mysqli_stmt_fetch($stmt)) {
        mysqli_stmt_error($stmt);
    }



    mysqli_stmt_free_result($stmt);
    mysqli_stmt_close($stmt);

admin_get_category_body.php (burada mysqli)

        <?php

        if (isset($_GET['get']) && !empty($_GET['get']) )
        {
            include 'intodb/edit_category.php';
        }


        if (check_method('get') && isset($_GET['delete']) )
        {
            require 'intodb/delete_category.php';
        }


        if (check_method('get') && isset($_GET['get']) )
        {
            require 'intodb/get_category.php';
        }


        ?>

        <!--            start: cat body          -->

        <div     class="columns is-mobile is-centered is-vcentered">
            <div class="column is-half">
                <div   class="section has-background-white-ter box ">


                    <div class="has-text-centered column    " >
                        <h4 class="title is-4">Ctegories</h4>
                    </div>

                    <div class="column " >


                        <?php if (check_method('get') && isset($_GET['get'])) {?>
                        <form action="" method="post">
                            <?php } else {?>
                            <form action="intodb/add_category.php" method="post">
                                <?php } ?>

                                <label class="label" for="admin_add_category_bar">Add Category</label>
                                <div class="field is-grouped">

                                    <p class="control is-expanded">

                                        <?php if (check_method('get') && isset($_GET['get'])) {?>

                                            <input id="admin_add_category_bar" name="admin_add_category_bar_edit" class="input" type="text" placeholder="Add Your Category Here" value="<?php echo $cat_name; ?>">

                                            <?php


                                            ?>
                                        <?php } else {?>
                                            <input id="admin_add_category_bar" name="admin_add_category_bar" class="input" type="text" placeholder="Add Your Category Here">

                                        <?php } ?>
                                    </p>
                                    <p class="control">
                                        <input type="submit" name="admin_add_category_submit" class="button is-info my_fucking_hover_right_arrow" value="Add Category">
                                    </p>
                                </div>
                            </form>


                            <div class="">

                                <!--            start: body for all posts inside admin          -->


                                <table class="table is-bordered">
                                    <thead>
                                    <tr>
                                        <th><p>Category Name</p></th>
                                        <th><p>Edit</p></th>
                                        <th><p>Delete</p></th>
                                    </tr>
                                    </thead>

                                    <?php

                                    global $connection;
                                    $sql = "SELECT * FROM categories ;";

                                    $result = mysqli_query($connection, $sql);
                                    if (!$result) {
                                        echo mysqli_error($connection);
                                    }
                                    while($row = mysqli_fetch_assoc($result))
                                    {
                                        ?>
                                        <tbody>
                                        <tr>
                                            <td><p><?php echo $row['category_name']?></p></td>
                                            <td>
                                                <a href="admin_category.php?get=<?php echo $row['category_id']; ?>" class="button is-info my_fucking_hover_right_arrow" >Edit</a>

                                            </td>

                                            <td>
                                                <a href="admin_category.php?delete=<?php echo $row['category_id']; ?>" class="button is-danger my_fucking_hover_right_arrow" >Delete</a>

                                            </td>
                                        </tr>


                                        </tbody>
                                    <?php }?>
                                </table>

                                <!--           end: body for all posts inside admin             -->




                            </div>

                    </div>
                </div>


            </div>

        </div>
        </div>

Aklımdan geçen bir şey, ben de yine global $ connection; üzerinden bağlantı değişkeni ekliyorum. Yani temelde mysqli_stmt_close ($ stmt) ile hazır ifadesinin bitiminden sonra tamamen yeni bir sorgu sistemi başlatıldığını düşünüyorum; ve ayrıca bu dosyaları ve diğer şeyleri include yoluyla ekliyorum


get_category.php (burada hazır ifadesini kullanarak) pastebin.com/BiWysdYz admin_get_category_body.php (burada mysqli) pastebin.com/Pwm30icm Not: Sınırlamadan dolayı kodun tamamı gönderilemiyor
Mahad Ali

Aklımdan geçen bir şey, ben de yine global $ connection; üzerinden bağlantı değişkeni ekliyorum. Bu nedenle, temelde mysqli_stmt_close ($ stmt) ile hazır ifadesinin bitiminden sonra tamamen yeni bir sorgu sistemi başlatıldığını düşünüyorum; ve ayrıca bu dosyaları ve diğer şeyleri include yoluyla ekliyorum.
Mahad Ali

-1

Bu eski bir soru, ancak benim durumumda yayınlanan cevapların hiçbiri işe yaramadı, benim durumumda saklı yordamımda bir tabloda seçimler ve güncellemeler olduğunu, aynı tablonun tetiklenen ve sonsuz bir döngüye yordam. Hata bulunduğunda hata ortadan kalktı.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.