PHP WHERE sonra çoklu sütunlar?

7 Cevap php

Hey tüm, sadece kısa bir soru (bence kolay bir düzeltme olmalı). Sorguda NEREDE açıklamada, birden çok sütun içerdiği için bir yolu var mı? İşte benim kod:

$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and pwd='$pass'";

Ne yapmak istiyorum (priv_level = '$ privlevel' denir) WHERE sonra başka bir sütun ekleyin. Ancak ben bunu nasıl sözdizimi emin değildi.

Yardımın için teşekkürler!

7 Cevap

Okunabilirliği için Sarılı:

$sql="
  SELECT * 
  FROM $tbl_name 
  WHERE username='$myusername' and pwd='$pass' and priv_level = '$privlevel'
";

Başkası deyimi ne kadar tehlikeli olduğu konusunda sizi uyaracaktır. :-) Think SQL injection.

$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and pwd='$pass' and priv_level = '$privlevel'";

Eğer "kullanmak isterseniz, bu deneyin:

$sql='SELECT * FROM '.$tbl_name.' WHERE username=\''.$myusername.'\' and pwd=\''.$pass.'\' and priv_level=\''.$privlevel.'\'';
$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and pwd='$pass' AND priv_level = '$privlevel'";

Bir yan not: Sen burada ne yapıyor görünen oldukça kötü bir uygulamadır.

Ben NEREDE-yan tümcesi (AND ile olabilir) eklemeniz gerekir düşünüyorum:

$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and pwd='$pass' and priv_level = '$privlevel'";

Uhm, sorgu zaten WHERE yan tümcesinde birden sütunları kullanır :)

Kenara SQL enjeksiyon sorunları (dikkat):

$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and pwd='$pass' and priv_level='$privlevel'";

WHERE fıkra AND çeklerin herhangi bir sayı, yani kolayca sadece çok sonunda and priv_level='$priv_level' eklerseniz, iki tane değil üç tane yapabilirsiniz.

Edit: @ thorarin cevabı söz olarak, bu SQL sorguları oluşturmak için riskli bir yoldur, ve parametre bağlayıcı güvenli olacak - ama bu WHERE fıkrasında iki üç vs sütunları kullanarak dik bulunuyor.