SORU
5 Mart 2009, PERŞEMBE


Senkronize komutları;'t bu komut artık çalıştırabilirsiniz

Mysqli üzerinden iki MySQL sorguları çağıran benim PHP kodu çalıştırmak ve hata bulmaya çalışıyorum "senkronize Komutları; bu komut artık kaçamazsın".

İşte kullanıyorum 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;
        }
    }
}

Bu kadar okuma denedim, ama ne emin değilim. Mağaza neden ücretsiz sonucu hakkında okudum, ancak bu onları kullanırken hiçbir fark yaratmıştır. Bu hata neden olur tam olarak emin değilim, ve neden neden, ve bunu düzeltmek için nasıl bilmek istiyorum.

Hata ayıklama ifadelerim göre, countQuery için ilk döngünün bile, benim sql bir hata nedeniyle '% ? %' yakınında sözdizimi yakın girilmiş olur. Ancak ben sadece * seçmek yerine sınırlamak GİBİ bir yan dayalı olarak çalışıyor, ben hala senkron hatası komutu alın.

CEVAP
5 Mart 2009, PERŞEMBE


Mysqli varsayılan olarak adet sorgular (hazır deyimler için; vanilya içinse tam tersi mysql_query) kullandığından, aynı anda iki ayrı sorgular alamazsın. Ya bu dizi boyunca bir döngü içine ilk getir, ya da mysqli sorgu ($stmt->store_result()) tampon söyleyebilirsin.

Ayrıntılar için here bkz.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ADDVOiCE

    ADDVOiCE

    28 Mayıs 2009
  • Arun Kumar

    Arun Kumar

    18 Mart 2010
  • gsmaestro

    gsmaestro

    17 AĞUSTOS 2006