ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

ThaiSEOBoard.comพัฒนาเว็บไซต์CMS & Free Script[PHP] mysqli search ข้อมูลใน DB ไม่ได้ครับ +1
หน้า: [1]   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: [PHP] mysqli search ข้อมูลใน DB ไม่ได้ครับ +1  (อ่าน 540 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
peetnawapol
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 57
ออฟไลน์ ออฟไลน์

กระทู้: 1,292



ดูรายละเอียด
« เมื่อ: 23 กุมภาพันธ์ 2016, 05:30:07 »

โค๊ด:
<?php include("script/function/config.php");

  if(isset(
$_GET[q])) { 
  
  
$q mysqli_real_escape_string($conn$_GET[q]);
  
$q trim($q);
  
$w preg_split("/[ ]{1,}/"$q);

  
$pname = array();
  foreach(
$w as $k) {
  
$x "('pname' LIKE '%".$k."%')";
  
array_push($title$x);
  }
  
$pname=implode(" OR "$pname);

  
$pth_name = array();
  foreach(
$w as $k) {
  
$x "('pth_name' LIKE '%".$k."%')";
  
array_push($pth_name$x);
  }
  
$pth_name=implode(" OR "$pth_name);

  
$condition="$pname OR $pth_name";

  
$shsql=mysqli_query($conn"SELECT * FROM 'post' WHERE $condition");
  
$count=mysqli_num_rows($shsql);
  }
  
?>
โค๊ด:
<?php
  
if($count == 0) {
    echo 
"NOT FOUND!&nbsp;".stripslashes($q);
  } else {
  
$p=implode("|"$w);
  
$p="/$p/i";

  while (
$row mysqli_fetch_array($shsql)) {
  
$title=preg_replace($p"<b>\\0</b>"$row['pname']);
  
$thtitle=preg_replace($p"<b>\\0</b>"$row['pth_name']);
?>
<a href="view.php?pid=<?=$row[pid];?>" ?><?=$title;?>&nbsp;<?=$thtitle;?></a><br>
<?php } } ?>
ค้นแล้วไม่เจออะไรเลยครับ ชื่อก็ตรงแล้ว
บันทึกการเข้า
amazegu
สมุนแก๊งเสียว
*

พลังน้ำใจ: 80
ออฟไลน์ ออฟไลน์

กระทู้: 875



ดูรายละเอียด
« ตอบ #1 เมื่อ: 23 กุมภาพันธ์ 2016, 09:36:34 »

ลอง echo sql query มาดูแล้วเอาไปรันใน phpmyadmin ดูครับ

แต่ถ้าเป็นผมๆจะเขียนแบบนี้

โค๊ด:
$q = $_GET['q'];

$sql = 'SELECT * FROM post WHERE 1';

$words = explode(' ', trim(preg_replace('/\s+/', ' ', $q)));

$implode = array();

foreach ($words as $word) {
    $implode[] = "(pname LIKE '%" . $word . "%') OR (pth_name LIKE '%" . $word . "%')";
}

if ($implode) {
    $sql .= " AND ( " . implode(" OR ", $implode) . " )";
}

echo $sql;
บันทึกการเข้า
peetnawapol
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 57
ออฟไลน์ ออฟไลน์

กระทู้: 1,292



ดูรายละเอียด
« ตอบ #2 เมื่อ: 23 กุมภาพันธ์ 2016, 14:08:22 »

ลอง echo sql query มาดูแล้วเอาไปรันใน phpmyadmin ดูครับ

แต่ถ้าเป็นผมๆจะเขียนแบบนี้

โค๊ด:
$q = $_GET['q'];

$sql = 'SELECT * FROM post WHERE 1';

$words = explode(' ', trim(preg_replace('/\s+/', ' ', $q)));

$implode = array();

foreach ($words as $word) {
    $implode[] = "(pname LIKE '%" . $word . "%') OR (pth_name LIKE '%" . $word . "%')";
}

if ($implode) {
    $sql .= " AND ( " . implode(" OR ", $implode) . " )";
}

echo $sql;
wanwan017
บันทึกการเข้า
หน้า: [1]   ขึ้นบน
พิมพ์