2013-05-31 9 views
5

Neden bu PHP uyarı iletisini alıyorum bilmiyorum. Görünen ifadede dört parametre ve bind_param() 'da dört değişken var. Herhangi bir yardım için teşekkürler!PHP Uyarı: mysqli_stmt :: bind_param(): Değişken sayısı, hazırlanan deyimde parametre sayısıyla eşleşmiyor

if($stmt = $mysqli -> prepare("SELECT url, month, year, cover_image FROM back_issues ORDER BY year DESC, month DESC")) { 
    $stmt -> bind_param("ssis", $url, $month, $year, $cover_image); 

    $stmt -> execute(); 

    $stmt -> bind_result($url, $month, $year, $cover_image); 

    $stmt -> fetch(); 

    while ($stmt->fetch()) { 
    echo "<li class='item'><a href='$url'><img src='$cover_image' alt='$cover_image' width='' height='' /></a><br /><span class='monthIssue'>$month $year</span></li>"; 
    } 

    $stmt -> close(); 
    $mysqli -> close(); 

} 
+0

(), ancak yer tutucu yok – andrewsi

cevap

8
if($stmt = $mysqli -> prepare("SELECT url, month, year, cover_image FROM back_issues ORDER BY year DESC, month DESC")) { 
    $stmt -> bind_param("ssis", $url, $month, $year, $cover_image); 
    [...] 
} 

bu çizgiler hiç mantıklı yok! Eğer parametreleri kullanmak istiyorsanız, hemen hemen gibi bir where koşul veya benzeri içine kullanmak zorunda: Herhangi yer tutucu yoksa parametrelerle bağlamak

$mysqli->prepare("SELECT * FROM back_issues WHERE url =? AND month =? AND year =? and cover_image = ?"); 
$stmt->bind_param("ssis", $url, $month, $year, $cover_image); 

, bind_param() yöntem hatası sen üretecek Boğaz kaçıyor. Üstelik, IF ifadesinin ne yapması gerekiyor? Bu sorgunun herhangi bir sonuç üretip üretmediğini doğrulamak istiyorsanız, önce onu çalıştırmanız ve ardından doğrulamak için sahip olmanız gerekir.

3

Bu durumda parametreleri bağlamanıza gerek yoktur. Yer tutucular, INSERT ifadesinde veya WHERE maddesinde bulunan değerler için kullanılır. (Yer tutucular böyle İfadende sütun adları olarak, tanımlayıcılar için izin verilmez unutmayın.) Gibi yer tutucular geçerli, basitleştirilmiş beyan görünecektir: Sen bind_param `de sorguya dört değişkeni bağlayıcı ediyoruz

"SELECT url, cover_image FROM back_issues WHERE month = ? and year = ?" 
İlgili konular