喵喵笨兔 の 喵喵的家~遊戲天地 - 首頁(上版面)
喵喵笨兔 の 喵喵的家~遊戲天地 - 首頁(左版面)
首  頁 最新消息 遊戲攻略 遊戲影片 遊戲圖片 下載區 學習分享 留言板 FB粉絲團
 喵喵笨兔 の 喵喵的家~遊戲天地 - PHP ~ MySQL 資料庫多欄位同時搜尋 & MySQL 資料庫取前幾筆、後幾筆或區間範圍內幾筆的資料!(含PDO範例)

PHP ~ MySQL 資料庫多欄位同時搜尋 & MySQL 資料庫取前幾筆、後幾筆或區間範圍內幾筆的資料!(含PDO範例)

php - limit :MySQL 資料庫取特定筆數的資料

  • 取前三筆 SQL 條件語法:
     SELECT * FROM 資料表名稱 limit 3

  • 取區間範圍內筆數的 SQL 條件語法: (從第 X+1 筆開始,取 Y 筆資料)
     SELECT * FROM 資料表名稱 limit X, Y
     例:SELECT * FROM 資料表名稱 limit 5, 5
     從第 6 筆開始取 5 筆資料,也就是取第 6 筆到第 10 筆的資料。

  • 取最後一筆資料:
     若您資料表內有日期欄位,或一般都會設的唯一且自動遞增的 ID 欄位, 以它用遞減 (DESC) 排序,再用 limit 1 來取,則此筆就是資料庫內最後 (新) 的一筆資料了!
     例:取最後三筆資料 SQL 條件語法
     SELECT * FROM 資料表名稱 ORDER BY 日期欄位名稱(或id欄位名稱) DESC limit 3

php - MySQL 資料庫多欄位同時搜尋

 SQL 查詢語法:

  • SELECT * FROM 資料表名 WHERE CONCAT(`欄位名1`,`欄位名2`,.....) LIKE %%
  • 其中欄位內的值應不能為 NULL
  • PS:CONCAT是先將裡面的資料結合再作查詢。例如欄位1是AB、欄位2是CD,結合後是ABCD,所以查詢BC是查的到。改成以下個別查詢就可避免此問題:
    SELECT * FROM 資料表名 WHERE 欄位名1 LIKE %% OR 欄位名2 LIKE %%

  例:網頁上表單的欄位 (search)
  $_a="'%".$_POST['search']."%'";
  $sql='SELECT * FROM test WHERE CONCAT(`date`,`a_name`) LIKE '.$_a;
  $result = mysql_query($sql) or die('MySQL query error');

 以連接笨兔網站的 MySQL 資料庫,取得【學習分享】的資料來做展示,範例設定的 MySQL 相關名稱如下。MySQL 連線部份,可參考笨兔另一篇隨手筆記【db_002】PHP 連接 MySQL 資料庫

  • 伺服器名稱: localhost
  • 使用者帳號: root
  • 使用者密碼: 12345678
  • 資料庫名稱: pcgame
  • 資料表名稱: learn
  • 資料表欄位名稱: l_id、l_date、l_sort、l_number、l_description、l_url 共有6個欄位

範例程式碼1:MySQL 函數寫法

  1. 網頁上表單內的欄位,只搜尋 MySQL 資料庫的 learn 資料表的五個欄位內資料,其中 l_url 欄位不搜尋,主要是紅色字部份笨兔小站上的各搜尋欄位皆以此方法
  2. 因笨兔小站【學習分享】 learn 資料表內的資料繁多,笨兔用 limit 3 以陣列資料方式來顯示符合搜尋條件的前三筆。
<?php   
      $dbhost = 'localhost'; 
      $dbuser = 'root';
      $dbpass = '12345678';
      $dbname = 'pcgame';

      $conn = mysql_connect($dbhost, $dbuser, $dbpass) or die('Error with MySQL connect') ; 
      mysql_query("SET NAMES 'UTF8'");  
      mysql_select_db($dbname);

     $_a="'%".$_POST['search']."%'";
     $sql='SELECT * FROM learn WHERE CONCAT(`l_id`,`l_date`,`l_sort`,`l_number`,`l_description`) LIKE '.$_a.' limit 3';

      $result = mysql_query($sql) or die('MySQL query error'); 

      if ($result && mysql_num_rows($result) > 0){
          while($row = mysql_fetch_array($result)){
               print_r($row);
               echo '<br>';
               }
           }

      mysql_close($conn);
?>

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>喵喵笨兔 の 喵喵的家~遊戲天地 - PHP ~ MySQL 資料庫多欄位同時搜尋 & MySQL 資料庫取前幾筆或後幾筆資料!</title>
</head>
<body>
      <form id="form1" name="form1" method="post" action="">
          <input type="text" name="search" id="search" />
          <input type="submit" name="btn" id="btn" value="搜尋" />
      </form>
</body>
</html>

範例程式碼2:PDO 函數寫法 (2019/7/5)

<?php
$dbhost = 'localhost'; 
$dbuser = 'root';
$dbpass = '12345678';
$dbname = 'pcgame';
try{
$dsn = "mysql:host={$dbhost};dbname={$dbname};charset=utf8";
$conn = new PDO($dsn, $dbuser, $dbpass);
//發生錯誤出現錯誤提醒
$conn -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}catch (PDOException $e){
//發生錯誤結束資料庫連線並顯示錯誤訊息
die($e -> getMessage());
} $sql="SELECT * FROM learn WHERE CONCAT(l_id, l_date, l_sort, l_number, l_description) LIKE '%{$_POST['search']}%' limit 3";
$rs = $conn -> prepare($sql);
$rs -> execute();
while($row = $rs -> fetch()){
echo $row[0]." ".$row[1]." ".$row[2]." ".$row[3]." ".$row[4]." ".$row[5]."<hr>";
} ?> <!doctype html> <html> <head> <meta charset="utf-8"> <title>喵喵笨兔 の 喵喵的家~遊戲天地</title> </head> <body> <form id="form1" name="form1" method="post" action=""> <input type="text" name="search" id="search" /> <input type="submit" name="btn" id="btn" value="搜尋" /> </form> </body> </html>

PDO函數範例結果:一開始會顯示所有陣列資料 (笨兔只抓取3筆資料),您再試著輸入欄位名稱內的字去尋找唄!^ ^

1 2017-09-10 遊戲 game_001 玩遊戲時的相容性問題參考解決法 (玩舊遊戲無法PLAY或執行修改器無作用) game_001.html
14 2017-09-12 網頁 html_002 所架設的 php 網站無法開 https:// 的網址或有問題!& 電腦架站後本機連線測試正常,外網無法連線問題! html_002.html
15 2017-09-12 網頁 html_003 Apache + PHP + MySQL 所架設的 php 網站,更改網頁根目錄及首頁預設檔! html_003.html
笨兔隨手筆記於 2017/10/26

喵喵笨兔 の 喵喵的家~遊戲天地
http://vv0817.tk
http://vvv.lionfree.net
http://qo3op.asuscomm.com/vvv
https://uoedgpkhyfwzmd7zua8myg-on.drv.tw/vvv