id şart değil, misal verelim tablonuzda id, baslik, mesaj şeklinde 3 sütun var. Siz id=3 olarak urlden değer gönderince tablonuzda id değeri 3 olan veri aranıyor ve bulunursa ekrana basılıyor, bu sistem id degeri ile kontrol yapılan bir sistemdir.

Bu veriyi id ile değilde başlık kısmıyla da çağırabilirsiniz, fakat bu biraz performans kaybına yol açmaktadır (verilerin çokluğu ile doğru orantılı olarak), bu performans kaybını başlık sutünunu index yaparak azaltmak mümkün, başlık için seo_baslik gibi özel seo sütunu oluşturabilirsiniz.

Ör; photoshop cs3 eğitim seti başlıklı bir konuyu, seo sütununa string replace vs işlemleriyle photoshop-cs3-egitim-seti olarak kaydettirerek seo linkleri oluşturabilirsiniz, dolayısı ile mesajı urlden yazilar.php?baslik=photoshop-cs3-egitim-seti şeklinde çağırabilirsiniz.

Ayrıca bu yöntem bazı güvenlik önlemleri & filtreler gerektirir.

2 sinede birer örnek verelim;

Örnek-1: id değeri ile veri çağırma
// http://siteadi.com/yazilar.php?id=3
if ($_POST['id'])
{
    $yazi_sql = mysql_query("SELECT * FROM yazi WHERE id = '" . intval($_POST['id']) . "';");

    if (mysql_num_rows($yazi_sql) > 0)
    {
        $yazi = mysql_fetch_array($yazi_sql);
         echo $yazi['mesaj'];
    }
    else
    {
        echo 'Böyle bir yazi yok';
    }
}
Örnek-2: başlık değeri ile veri çağırma
// http://siteadi.com/yazilar.php?baslik=php-gorsel-dersler 

if ($_POST['baslik'])
{
    $yazi_sql = mysql_query("SELECT * FROM yazi WHERE seo_baslik = '" . htmlspecialchars($_POST['baslik']) . "';");

    if (mysql_num_rows($yazi_sql) > 0)
    {
        $yazi = mysql_fetch_array($yazi_sql);
        echo $yazi['mesaj'];
    }
    else
    {
        echo 'Böyle bir yazi yok';
    }
}