Ne benim MySQL sorgusu iki sonuçtan sonra askıda neden olur?

2 Cevap php

Ben sayfamda yazdırmak benim get yaşam için olamaz basit bir sorgu var:

$results = mysql_query("SELECT * FROM andyasks ORDER BY date");
$test = mysql_fetch_array($results, MYSQL_BOTH);
foreach ($test as $row){
    print($row[questions]);
}

Ne bu çıkışlar, sadece ilk iki satır için, (önceden kestirilemeyecek, gözlerimi) each tablo alanının sadece ilk harfidir. Yani bir 75 satır tablo x 5 sütun sıraya 75 "sorular" göstermesi gerekir, ama bunun yerine ilk iki satır her hücrenin ilk harfi olan "00WWFFAA00" gösteriyor. Ne oluyor?

2 Cevap

Bu deneyin.

$results = mysql_query("SELECT * FROM andyasks ORDER BY date");

while($row = mysql_fetch_array($results))
{
    print($row["questions"]);
}

Nedeni tek getirme ile yapmak olacaktır

$test = mysql_fetch_array($results, MYSQL_BOTH);

Eğer bir süre döngü içinde olması gerekir bu yüzden. Bu bir satır getirir ve daha fazla satır olduğunda (daha fazla satır olduğunda yanlış döndürür beri) ise döngü sona erecektir.

Sadece kod ile yanlış anlatmaya ...

Sizin kod $test değişken içine sadece ilk satırı getiriliyor. Indeksi hem de ve adıyla anahtarlı (MYSQL_BOTH ne olduğu) - Bu dizi iki kez her sütun içerir. Eğer eklerseniz print_r($test); döngü önce dizinin içeriğini dökümü olacak, böylece neler olup bittiğini görebilirsiniz.

Ne döngü yapar, her sütunda geçmesi ve bir dizge olarak $row içine onun değerini özüdür. Eğer bir dize içeren bir değişken dizi sözdizimi (yani $row["questions"]) kullandığınızda, PHP seçtiğiniz dizinde bir karakter ayıklar. "question" bir sayı olmadığından, her bir sütunun ilk harfini olsun neden olduğu, 0'a değerlendirir.

Ólafur Waage yapmak için çalışıyoruz ne için doğru sözdizimi vardır.