Bir hazır deyimi ile mysqli_fetch_object kullanmak mümkün mü

1 Cevap php

Ben mysqli_fetch_object kullanımı ile gördüğünüz tüm örnekler mysql_query(), ben hazırlanıp işe alınamıyor. Fetch_object null döndürür gibi herkes, bu kod parçası ile neyin yanlış olduğunu biliyor mu.

$sql = "select 1 from dual";
printf("preparing %s\n", $sql);
$stmt = $link->prepare($sql);
printf("prepare statement %s\n", is_null($stmt) ? "is null" : "created");
$rc = $stmt->execute();
printf("num rows is %d\n", $stmt->num_rows);
$result = $stmt->result_metadata();
printf("result_metadata %s\n", is_null($result) ? "is null" : "exists");
$rc = $result->fetch_object();
printf("fetch object returns %s\n", is_null($rc) ? "NULL" : $rc);
$stmt->close();

Çıktısı:

preparing select 1 from dual
prepare statement created
num rows is 0
result_metadata exists
fetch object returns NULL

1 Cevap

Ben arayüzü böyle çalıştığını inanmıyorum.

Belgeler ve örneklerle Oluyor (http://www.php.net/manual/en/mysqli.prepare.php) bu $ deyim-> () bir resultset çıkmıyorsa yürütmek gibi görünüyor, ama bir Boole gösteren başarı / başarısızlık (http://www.php.net/manual / tr / mysqli-stmt.execute.php). Aslında sonuç almak için $ stmt-> bind_result kullanılarak (aftere çağrısını yürütmek) resultset değişkenleri bağlamak gerekiyor (http://www.php.net/manual/en/mysqli-stmt.bind-result.php .)

$ Için tüm yaptım sonra, tekrarlanan yapabilirim aramalar stmt-> geçerli satırın sütun değerleri ile ilişkili değişkenleri doldurmak için ()) (getir. Ben $ deyim-> fetch_object () herhangi bir söz görmüyorum ne de ben tarif gibi bu arayüzü değişken bağlama düzeni ile çalışmak nasıl görüyorsunuz.

Yani bu mysqli hazırlanmış statments dan getiriliyor "normal" sonuç için hikaye.

In your code, there is something that I suspect is an error, or at least I am not sure you intended to do this. You line:

$result = $stmt->result_metadata();

$ sonuç değişkeni kendisi bir resultset olarak temsil edilir resultset meta, assignes. Doc göre (http://www.php.net/manual/en/mysqli-stmt.result-metadata.php) yalnızca resultsets bu 'özel' türlü yöntemlerden bir alt kümesini kullanabilirsiniz, ve fetch_object () bunlardan biri değildir (en azından açıkça listede yok).

Belki de () belki bu konuda bugs.mysql.com bir hata dosya gerekir, bu meta veri resultsets için uygulanmadı fetch_object bir hatadır.