v2.5.2
Giriş yap

Arama motoru hata yardım

Anonim
489 defa görüntülendi ve 1 kişi tarafından değerlendirildi

Arkadaşlar bu kod ile site içi arama sağlıyorum ancak kodda bir yerine bir hata var ve hatayı bulamadım. Hata şu : herhangi bir şey yazınca veritabanındaki bütün her şeyi önüme yığıyor bunu nasıl düzeltebilirim?

<?php

$db = new mysqli("localhost", "root", "password", "veritabani");

$word = @$_GET["q"];

$sql = $db->query("SELECT * FROM veritabani WHERE baslik LIKE '%".$word."%' ");

if ($sql->num_rows) {
    while ($row = $sql->fetch_assoc()) {
        //Linklendirme yapacağın alan
        $baslik = $row["baslik"];
        $url = $row["url"];
        echo "<a href=$url>$baslik</a><br>";
        
        
    }
} else {
    echo "sonuç yok";
}

?>
Cevap yaz
Cevaplar (3)
aydinkeskin
1417 gün önce

$sql = $db->prepare("SELECT * FROM veritabanı WHERE baslik LIKE ? LIMIT 5");
$sql->execute(["%".$word."%"]);
$cek = $sql->fetch(PDO::FETCH_ASSOC);

sanki böyle daha iyi olur

ve tavsiyem artık @ işareti kullanma

isset($_GET["q"]) $q = $_GET["q"] else $q = "";

if($q != "" )
işlemler
else

get verisi alınamadı gibi birşeyler yapabilirsin.
m100
1420 gün önce
$sql = $db->prepare("SELECT * FROM veritabanı WHERE baslik LIKE '".$word."' LIMIT 5");
$sql->execute();
$cek = $sql->fetch(PDO::FETCH_ASSOC);

bu kodu bir deneyebilir misin çalışacağını düşünüyorum.

EDİT:

PDO ile yapman hem daha sağlıklı hem daha kullanışlı veri adetini kontrol ettirirken ise
şunu kullanabilirsin
$adet = $sql->rowCount();

isimimcokguzel2
1422 gün önce

Bunu dener misiniz Hocam.

$sql = $db->query("SELECT * FROM veritabani WHERE baslik LIKE '%".$word."%' LIMIT 5");