Arama motoru hata yardım
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";
}
?>
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (3)
$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.
$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();
Bunu dener misiniz Hocam.
$sql = $db->query("SELECT * FROM veritabani WHERE baslik LIKE '%".$word."%' LIMIT 5");