Başka bir sorguda bir test olarak kullanmak, benim db gelen sayılar dizisi döndürür

2 Cevap php

Burada bazı SQL / php sözdizimi sorunları ile mücadele ediyorum.

Ben iki işlev yazmaya çalışıyorum.

İlk bir veritabanını sorgulamak ve belirli kriterlere uyan sayılar bir dizi döndürür.

İkinci bir veritabanını sorgulamak ve ben arıyorum verileri seçmek için ilk işlevi değerleri kullanır.

İşte ben bugüne kadar birinci işlevi ne var:

$sql = "SELECT requestee_id FROM user_relationships WHERE requester_id = '$uid' AND rtid = '13'";   
 $resulto = mysql_query($sqlo) or die(mysql_error());
  while($rowo = mysql_fetch_array($resulto)){

                                             }

Nasıl bu yüzden requestee_id değerler dizisini döndürür bitirmek mi?

İşte benim ikinci sorgu var:

$query = "SELECT * FROM {votingapi_vote} vv WHERE ". drigg_votingapi_query('vv', FALSE) ." AND vv.content_type = 'node' AND vv.content_id = %d";

Benim ilk işlevi vv.uid dizi içinde bir değerdir, bu sorgu, başka bir WHERE koşulunu eklemek istiyorum. Bu ikinci fonksiyon bir hikaye için oy insanların bir listesini döndürür. Ben oy herkes, geri dönmek istiyorum, ama belirli bir kullanıcının arkadaş sadece insanlar.

Ilk sorguyu bitirme ve ikinci birine bu değerlerini uydurma için Öneriler?

2 Cevap

Sadece tek bir sorguda bunu yapmak için bir alt sorgu kullanabilirsiniz:

$query = "SELECT * FROM
    {votingapi_vote} vv
WHERE
    ". drigg_votingapi_query('vv', FALSE) ."
AND
    vv.content_type = 'node'
AND
    vv.content_id = %d
AND
    vv.uid IN (SELECT
            requestee_id
        FROM
            user_relationships
        WHERE
            requester_id = '$uid'
        AND
            rtid = '13')";

Zaten ilk sorguda bir dizi var, o $rowo değişken olduğunu, bu komutu çalıştırarak içeride neler olduğunu görebiliriz:

echo("<pre>".print_r($rowo,true)."</pre>");

Daha sonra ilk sonucu göre ikinci sorgu sınırlamak için IN yan tümcesi SQL kullanabilirsiniz. Sürece dizi bu gibi bir şey görünüyor:

array (
    [0] => 12
    [1] => 43
    [2] => 45
    [3] => 60
)

Sonra bu komutu kullanabilirsiniz:

$in_clause=implode(",",$rowo); // converts the array to 12,43,45,60
$query = "SELECT * FROM {votingapi_vote} vv WHERE ". drigg_votingapi_query('vv', FALSE) ." AND vv.content_type = 'node' AND vv.content_id = %d AND your_id IN ".$in_clause.";";

Bu kod ilk sorgunun dizinin içeriğine bağlı olarak çalışmayabilir, önerilen şekilde print_r kodu çalıştırmak lütfen buraya geri dizinin içeriğini gönderebilirsiniz.

Umarım bu yardımcı olur.