Ben bağlı değişkenler sitemizde gelişmiş bir arama fonksiyonu (onlar aramak için çağrı değişebilir) dinamik olarak hazırlanmış olan bir PDO hazırlanmış deyimi var.
Ben gerçek SQL çağrısı doğru olduğunu biliyorum ama hazır deyimi içine benim dize değişken geçmek için çalışırken nedense ben aşağıdaki hatayı alıyorum:
SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens
Ben daha önce bu hata vardı ve normal bir çözünürlük adımlarla çok tanıdık gelmiştir. Ancak, benim şartlar oldukça garip. Aşağıdaki örnek kodla:
$columns = "FirstName, LastName, ID, City, State";
$sWhere = "WHERE (FirstName LIKE ? AND LastName
LIKE ? AND ID LIKE ? AND City
LIKE ? AND State LIKE ?)";
$sVal = "'tom', 'lastname', '12345', 'Diego', 'CA'";
$sql = "SELECT ".$columns." FROM table ".$sWhere;
$stmt = $db->prepare($sql);
$stmt->execute(array($sVal));
burada $sVal
üzerinde 12 değişkenlere .... 'soyad', 'Isim' arasında olabilir. Değişkenlerin sayısını değiştirerek aynı sonucu verir. Tam ifadesidir:
SELECT FirstName, LastName, ID, City, State
FROM table
WHERE (FirstName LIKE ? AND LastName
LIKE ? AND ID LIKE ? AND City
LIKE ? AND State LIKE ?)
Ben olduğu gibi benim sorgu çalıştırdığınızda, yukarıdaki hata döndürülür. Ben değişkenlerin yanlış sayıda var aslında sanıyordum, benim $ değer tablosuna bir ECHO koştu ve onlar maç yaptım bulundu.
Ikincil bir testi olarak, $ değer echo çıkışını aldı ve yürütmek diziye geri doğrudan takılı:
$stmt->execute(array('tom', 'lastname', '12345', 'Diego', 'CA'));
Bu, hiç bir sorun ile çalışır.
Bu sorumun etkilemez ama ben de doğruluğu benim $ SVAL değişkeni içinde% sembolleri yerleştirilir:
$ SVAL = "'% tom%', '% soyad%', '% 12345%', '% Diego%', '% CA%'";
Bu AYNI değişkenin echo'd çıktı çalışmak olacağını bana SIFIR mantıklı ama değişken kendisi olmaz. Herhangi bir fikir?