2010-11-20 33 views
2

Sorgunun başlangıçlar var karşılaştırarak değil NEREDE ile belirleyin: - Öyle bir seferde bir adım hareket ediyorum ElbetteMySQL birden tablo 2 tablo

SELECT tf_threads.*, tf_posts.* FROM tf_threads, tf_posts WHERE tf_threads.thread_id=54

, bu birinin başlangıcı sadece Zaman geçtikçe çok daha iyi olacak. Şu anda takılıyorum, ancak, bir sütun bir sütun bir başka bir sütun değil, bir PHP ile karşılaştırmak için bir WHERE yan tümce nasıl elde edilir. Ben

PHP şudur:

SELECT $tf_threads.*, $tf_posts.* FROM $tf_threads, $tf_posts WHERE $tf_threads.thread_id=$tf_this_forum

Burada önemli bit $tf_threads.thread_id=$tf_this_forum olduğunu. Bunu denediğimde, MySQL ile Impossible WHERE noticed after reading const tables: satırları döndürmez. Elbette bu iyi çalışmalı mı? Açıkçası, öyle değil, bu yüzden lütfen buraya yardım edebilir mi?

Çok teşekkürler,

James

DÜZENLEME: Ben de böyle saf MySQL sorgusu yapıyor denedim:

SELECT tf_threads.*, tf_posts.* FROM tf_threads, tf_posts WHERE tf_threads.thread_id=54

Her iki tırnak İLE 54 yuvarlak ve olmadan, aynı hiçbir satır sonucu ile.

cevap

1

Sorgula örtün bir CROSS JOIN gerçekleştiren ve çok sayıda $ işaret içerdiği görülüyor.

aşağıdaki ekstra değişiklikleri öneririm:

  • Kullanım ANSI-92 ANSI-89 (virgül) katılır yerine (anahtar sözcük JOIN) katılır. Bir tam sayı olduğundan emin olmak için $ tf_this_forum uygulanan intval kullanın.
  • Dizeden dinamik olarak sorgu oluşturmak yerine bağlama parametrelerini kullanmayı düşünün.
  • Sadece bir PHP değişkenine başvurduğunuzda $ kullanın. const tabloları okuduktan sonra fark NEREDE hata İlişkin

imkansız bu hiçbir satır eşleşti anlamına gelir. Aradığınız satırın gerçekten veritabanınızda bulunduğundan emin olun. Yapamamış olabilir.

+0

Teşekkürler! JOIN'in mermi noktanız harika çalıştı; Bu sorguyu mükemmelce yerine getirir: 'tect tf_threads. *, tf_posts. * FROM tf_threads LEFT JOIN tf_posts ON tf_threads.thread_id = 54' – Bojangles

1
SELECT tf_threads.*, tf_posts.* FROM tf_threads, tf_posts WHERE 
tf_threads.thread_id='$tf_this_forum' 

Not: mysql_real_escape_string$tf_this_forum henüz kaçmış değil gerekiyorsa.

+0

Girdi için teşekkürler, ancak 'thread_id' sayısal bir alan olsa da - OP'mde karışıklığı önlemek için bunu eklemeliydim. Lütfen çözüm için @Mark Byer'ın gönderisine bakın :-) – Bojangles

+0

Ayrıca, diğer kullanıcılara iyi tavsiyeler için +1 - her zaman bir değişkenin sayısal olamayacağını garanti edemezsiniz! – Bojangles