mysqli birden fazla sorgu - ayarlanan değişken bu atlamaya boolean hata / nasıl üretir?

2 Cevap php

Phpmyadmin aracılığıyla çalışıyor ama benim php web sitesine eklediğinizde hiçbir sonuç ya döndü ve hiçbir hata / uyarı mesajı vardır Aşağıdaki basit sorgu var. Ben "SET @ N = -1;" kaldırırsanız o zaman gayet iyi çalışıyor.

<?php 
$db_connect = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD, true);
mysql_select_db(DB_NAME, $db_connect);

$test_query = mysql_query("SET @N=-1;SELECT `id`, (@N:=@N+1) AS `mycount` FROM `mydb`;");

for ($i = 0; $i <= mysql_num_rows($test_query)-1; $i++) {
   echo mysql_result($db_directorymap, $i, 0) . " " . mysql_result($db_directorymap, $i, 1) . "<br />";
}
?>

GÜNCELLEME: Ben sadece MySQLi taşındı ama tabii ben hala mysql deyimi ve mysqli_multi_query ile ilgili bir sorun yaşıyorum. Iade sonuç bir boolean bir hata verilir ve böylece boş sorgunun ilk bölümünü çalıştığında görünüyor. Ben sonuçlar ilk seti atlamak zorunda ama ben bunu nasıl bilmiyorum tahmin ediyorum?

2 Cevap

mysql_query fonksiyonu sadece bir sorgu kabul edecektir, çünkü bu, ancak bir noktalı virgülle ayırarak, iki verdik. Denemek ya:

  1. (Bu işe eğer bilmiyorum) ayrı ayrı her bir sorgu Koşu:

    mysql_query( "SET @N=-1" );
    mysql_query( "SELECT `id`, (@N:=@N+1) AS `mycount` FROM `mydb`" );
    
  2. mysqli multi_query fonksiyonu (ya da eğer varsa bir PDO eşdeğeri) ile kullanma.

Güncellenmiş soruyu yanıtlamak için: PHP kılavuzu sayfasını multi_query kontrol edin. Sana mysqli::next_result kullanmak isteyeceksiniz düşünüyorum. Usul stilini kullanarak böyle bir şey:

mysqli_multi_query($link, $query);
mysqli_next_result($link);

if ($result = mysqli_store_result($link)) {
    while ($row = mysqli_fetch_row($result)) {
        printf("%s\n", $row[0]);
    }
    mysqli_free_result($result);
}

Mysql_query üzerinden Çoklu sorguları desteklenmez, bu yüzden sadece sonraki SELECT komutu SET komutu yürütme ve değil tahmin ediyorum.