2013-02-08 12 views
19

Bu, yeni bir hata olmalı, ancak ben göremiyorum. İşte benim kodundan snippet'idir: Ben $ yılı için değerleri dışarıda yankı ve ben değerleri görüyorum $ yapmak, ama bu komut dosyası çalıştırdığınızda, aşağıdaki uyarısını boş değer almak vePhp mysqi bind_param Değişkenlerin sayısı, hazırlanan ifadedeki parametrelerle eşleşmiyor

$mysqli = mysqli_connect($dbCredentials['hostname'], 
    $dbCredentials['username'], $dbCredentials['password'], 
    $dbCredentials['database']); 

if ($mysqli->connect_error) { 
    throw new exception('Connect Error (' . $mysqli->connect_errno . ') ' 
    . $mysqli->connect_error); 
} 

$stmt = $mysqli->prepare("SELECT DISTINCT model FROM vehicle_types 
    WHERE year = ? AND make = '?' ORDER by model"); 

$stmt->bind_param('is', $year, $make); 

$stmt->execute(); 

benim günlük dosyasında görüntülenir: Bu durumda

PHP Warning: mysqli_stmt::bind_param(): Number of variables doesn't match number of parameters in prepared statement 

, yıl tipi int veritabanına (10) içinde olduğunu ve bir int döküm olmuştu bir kopyasını geçen denedim ve yapmak (bir varchar 20) utf8_unicode_ci kodlaması ile. Bir şey mi eksik? Sizin Hazırlanan deyimi yanlıştır

+0

ile böyle döküm yapmaya çalışıyorsunuz? ** Bu bind_param yönteminde ** nedir? –

+0

$ Tip dizesidir. "Olan", ilk parametrenin bir tamsayı ve ikincinin bir dize olduğunu belirtmelidir. – TMorgan

cevap

34

, bu olmalıdır:

$stmt = $mysqli->prepare("SELECT DISTINCT model FROM vehicle_types WHERE year = ? AND make = ? ORDER by model"); 

tek tırnak yaptı? değer değil bir işaretçi olmak. Zaten bir dize olacak çünkü bind_param('is'

+0

Teşekkürler. Tam olarak buydu. – TMorgan

+1

Sorunu çözdüyse, bunu cevap olarak işaretlemeyi unutmayın. – NoLifeKing

İlgili konular