2016-03-28 9 views
0

Birden çok posterin gönderilerini bulmak için dinamik bir WHERE yan tümcesi yapmak istiyorum. Bu benim kodum şu ana kadar.PHP/MySQLi WHERE IN cümleciğindeki bir dize dizisini kullanarak hazırlanmış deyimlerle

$in = join(',', array_fill(0, count($myArray), "?")); 
$query = "SELECT * FROM posts WHERE poster IN ($in)"; 
$statement = $conn->prepare($query); 
$statement->bind_param(str_repeat("s", count($myArray)), ...$myArray); 
$statement->execute(); 
$result = $statement->get_result(); 

Yukarıdaki kod çalışıyor ancak benim dizimde yalnızca ilk kişi için çalışıyor. Dizide listelenen her kişiden yayınları nasıl alabilirim?

+0

bir olarak bize $ myArray' 'ne olduğunu hakkında bir fikir .... –

+0

verene kadar bu cevap veremiyor uygulama meselesi, takma ad kullanmamalısınız. [join] (http://php.net/manual/en/function.join.php), [implode] 'un bir takma adıdır (http://php.net/manual/en/function.implode.php). Şimdi işe yarayabilir, ancak bazı nedenlerden ötürü takma karar verene kadar bekleyin (bu olur). –

+0

Örneğin, $ myArray Dizisi ([0] => krithik [1] => alex) $ myArray, yalnızca bir kullanıcının kullanıcı adlarının dizelerini içerir. – zam

cevap

-4

bir dize oluşturun ve bir foreach döngüsü

kullanarak $ sorgusuna eklemeden
$where = "where poster IN (" 
foreach ($myArray as $value) { 
    $where = $where + "'" + $value + "'" 
} 
$where = $where + ")" 
+0

Negatif. PHP'de birleştirme için '+' kullanmazsınız (javascript). Ayrıca yarı-kolonlara ihtiyacınız var. Ayrıca, 'AS' –

+1

gibi CAP CASE anahtar sözcüklerini de girmelisiniz. Bu, hazırlanmış ifadeleri kullanmanın tüm amacını ortadan kaldırır. Lütfen bunu önermeyin. – tadman

İlgili konular