$listele = "SELECT * FROM mesaj WHERE alan_kuladi = " .$kuladi;

gibi bir kodum var bir listeleme fonksiyonunun içinde. birincisi bu variable kullanımı yanlış mı? olmaması lazım ama olmuyor. buraya değişken yerine örneğin

$listele = "SELECT * FROM mesaj WHERE alan_kuladi = 'mahmut'";

yazınca mahmut'un aldığı mesajları listeliyor. fakat ne fonksiyonun içinde örneğin;

$temp = 'mahmut';
$listele = "SELECT * FROM mesaj WHERE alan_kuladi = " .$temp;

yazınca ne de fonksiyondan $kuladi'yi argüman olarak aldığımda çalışmıyor ve şöyle bir mesaj veriyor;

Unknown column 'mahmut' in 'where clause'

tamam, anladık, column'u algılayamıyor fakat nasıl aşacaığmı çözebilmiş değilim. bir yardım eden olursa süper olur.

 

tirnaklari yanlis kullaniyorsun.
$listele = "SELECT * FROM mesaj WHERE alan_kuladi = " .$temp;

sonucu sudur SELECT * FROM mesaj WHERE alan_kuladi = mahmut < burada mahmut tirnak icinde degil. soyle yapsan calisir ama

$listele = "SELECT * FROM mesaj WHERE alan_kuladi = '" .$temp."'";

ayrica bu kodla veritabanina sizarlar. detayli bilgi icin php sql injection diye arat ama ben kisaca korumayi anlatayim, butun string verileri escape ediyorsun. ornegin

$temp=mysql_real_escape_string('mahmut');

ya da GET ile gelen alanda direk soyle;

$listele = "SELECT * FROM mesaj WHERE alan_kuladi = '"+ mysql_real_escape_string($_GET['hede'])+"'";

erich
1

mobil görünümden çık