Mysql select tablolara php değişkenleri (diziler) nasıl kullanılır?

3 Cevap php

Nasıl bir mysql select deyimi içinde bir php değişken (dizi) kullanıyorsunuz?

Ben bir açık artırma sitesi tasarımı ve şu anda insanlar bir öğe için tüm geçerli tekliflerin listesini görüntülemenizi sağlayan bir sayfada çalışıyorum. Ben 3 sütunları görüntülemek istiyorsanız:

  1. amountbid - Her İstekli madde için teklif verdi tutarı (tblbid düzenlenen)

  2. bidderid - teklif etti, her isteklinin kimliği (tbluser bulundu)

  3. total_positivity_feedback - kaç kullanıcının (tblfeedback hesaplanan) İstekli için olumlu geribildirim yapmamışlar

I önceki sayfada essayid URL parametresini geçirmek 'miktar' ve 'bidderid' sütunları bulmak için. Bu çalışıyor.

Buna rağmen, ben her teklifi yaptık çeşitli kullanıcılar için total_positivity_feedback sütununu görüntülemek olamaz.

Benim mysql sorgu şöyle:

select
tblbid.bidderid, 
tblbid.amount,
(select count(tblfeedback.feedbackid) from tblfeedback WHERE tblfeedback.writerid = "ARRAY VARIABLE GOES HERE") AS total_positivity_feedback FROM tblbid WHERE tblbid.essayid = $essayid_bids

Bunu gerçekleştirmek için tek yol değişken söz konusu deneme için teklif insanlardan bidderid bulunuyor içeren yapmak olduğunu varsayıyorum? Ben bu tho yapmak için nasıl çalışmak için görünmüyor olabilir?!?

Yardımlarınız için çok teşekkürler

3 Cevap

Bu Writer kimliği gelmek gerektiğini sorunun açık değil. Eğer "dizi" derken, bir PHP dizi demek veya veritabanında satırlar depolanır birden fazla değer başvuruyorsunuz? Eğer veritabanı yapısı Yazarlar hakkında hiçbir şey söz olarak açıklama eski önerir, ama ikincisi demek olduğunu sanıyorum.

Bir diziden bir değer oldukça basit bir PHP dizeye eklemek olabilir:

$arr = array("String");
echo "{$arr[0]}";

Daha önce belirttiğim gibi, ben bu sorunu çözmek olmaz sanıyorum. Eğer Tekliflerin ve Yazarlar arasındaki ilişkiyi açıklayabilir misiniz? Her isteklinin üzerinde geri bildirim almak için çalışıyorsanız, o zaman böyle bir şey isteyen edeceğiz:

SELECT
    tblbid.bidderid, 
    tblbid.amount,
    (SELECT COUNT(tblfeedback.feedbackid) from tblfeedback WHERE tblfeedback.writerid = tblbid.bidderid) AS total_positivity_feedback
FROM tblbid WHERE tblbid.essayid = $essayid_bids;

Aksi takdirde daha açıklayınız.

Ben böyle bir dizi kullanmak mümkün olacak sanmıyorum. Bir IN Clause kullanımı yapmak zorunda kalacaktır.

SQL IN Operator bakabilirsiniz

Böylece değerlerin bir listesini oluşturmak zorunda olacak, gibi bir şey söylemek sağlar

SELECT *
FROM yourTable
WHERE yourID IN (1,2,3,4,5,6)

As suggested by astander, it appears you may benefit from the IN clause of MySQL. A quick way to generate the (1,2,3,4,5,6) string would be use the php function implode().

örneğin:

$array = array(1,2,3,4,5);
$in = '(' . implode(',', $array) . ')';
echo $in;

verimleri:

(1,2,3,4,5)

bu yüzden ..

$array = array(1,2,3,4,5);
$in = '(' . implode(',', $array) . ')'; 
$query = sprintf('select tblbid.bidderid, tblbid.amount, (select count(tblfeedback.feedbackid) from tblfeedback WHERE tblfeedback.writerid IN %s AS total_positivity_feedback FROM tblbid WHERE tblbid.essayid = %s', $in, $essayid_bids);