phpmysql實例
PHP+Mysql多條件多值查詢示例代碼:
index.html代碼:
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""
<html>
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=UTF-8">
<title>SQL多條件查詢示例</title>
</head>
<body>
<formmethod="post"action="deal.php">
<h1>房屋出租</h1>
房屋類型:<selectname="type">
<optionvalue="1">一居室</option>
<optionvalue="2">二居室</option>
<optionvalue="3">三居室</option>
</select><br/>
面積:<inputname="area"type="text"/><br/>
地址:<inputname="addr"type="text"/><br/>
<inputname="btn"type="submit"value="搜索"/><br/>
</form>
</body>
</html>
deal.php文件:
<?php
//連接資料庫
$conn=mysql_connect("localhost","root","");
//選擇資料庫
$db=mysql_select_db("資料庫名");
//接收參數
$type=$_POST['type'];
$area=$_POST['area'];
$addr=$_POST['addr'];
//SQL語句主題
$query="select*fromroomwhere";
//根據條件和傳的值拼接sql語句
//判斷面積不為空
if($type!=""){
//然後根據具體面積分情況拼接
switch($type){
case1:
//一居室
$query.="room_type=1";
break;
case2:
$query.="room_type=2";
break;
case3:
$query.="room_type=3";
break;
}
}
//面積
if($area!=""){
$query.="andarea={$area}";
}
//地址
if($addr!=""){
$query.="andaddrlike'%{$addr}%'";//地址
}
//執行查詢
$result=mysql_query($query);
//遍歷結果
echo"搜搜結果如下:";
while($row=mysql_fetch_array($result)){
echo"地址:".$row['addr'];
echo"<br/>";
echo"面積:".$row['area'];
echo"<br/>";
echo"居室:".$row['type'];
echo"<br/>";
echo"價格:".$row['addr'];
echo"<br/>";
//等等
}
?>
2. PHP+MYSQL 實現隊列 進行發送簡訊怎麼做
最近遇到一個批量發送簡訊的需求,簡訊介面是第三方提供的。剛開始想到,獲取到手機號之後,循環調用介面發送不就可以了嗎?
但很快發現問題:當簡訊數量很大時,不僅耗時,而且成功率很低。
於是想到,用PHP和MySQL實現一個消息隊列,一條一條的發送簡訊。下面介紹具體的實現方法:
首先,建立一個數據表sms,包含以下欄位:
id,
phone, //手機號
content //簡訊內容
將需要發送的簡訊和手機號存入sms表中。
接下來,需要用PHP實現一個定時器,定時讀取一條記錄,並發送簡訊:
<?php
$db = new Db();
$sms = new Sms();
while(true){
$item = $db->getFirstRecord(); //獲取數據表第一條記錄
if(!$item){
//如果隊列中沒有數據,則結束定時器
break;
}
$res = $sms->send($item['phone'],$item['content']); //發送簡訊
if($res){
$db->deleteFristRecord(); //刪除發送成功的記錄
echo $item['phone'].'發送成功';
}else{
echo $item['phone'].'發送失敗,稍後繼續嘗試';
}
sleep(10); //每隔十秒循環一次
}
echo '發送完畢!';
?>
將代碼保存為timer_sms.php,打開命令行,執行定時器:
php timer_sms.php
好了,php定時器將會根據設定的時間間隔(這里設的是10秒),自動完成發送簡訊的任務。任務完成後將自動退出定時器,不再佔用伺服器資源。
根據我的測試,PHP定時器佔用資源並不多,不會對伺服器造成壓力。而且是非同步訪問資料庫,也不會影響資料庫的運行。
這種方式的優點是:
1、後台運行,前台無需等待
2、成功率高,失敗的記錄會自動重發,直到成功
3. PHP同時連接多個mysql資料庫示例代碼
這篇文章主要介紹了PHP同時連接多個mysql資料庫的具體實現,需要的朋友可以參考下
實例:
代碼如下:
$conn1 = mysql_connect("127.0.0.1", "root","root","db1");
mysql_select_db("db1", $conn1);
$conn2 = mysql_connect("127.0.0.1", "root","root","db2");
mysql_select_db("db2", $conn2);
$sql = "select * from ip";
$query = mysql_query($sql);
if($row = mysql_fetch_array($query))
echo $row[0]."";
$sql = "select * from web ";
$query = mysql_query($sql);
if($row = mysql_fetch_array($query))
echo $row[0];
?
這段代碼存在問題,在程序執行時會報錯:PHP Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in ....
原因分析:
程序開始建立兩個資料庫鏈接,函數mysql_query()原型:
resource mysql_query ( string $query [, resource $link_identifier ] )
向與指定的連接標識符關聯的伺服器中的當前活動資料庫發送一條查詢。如果沒有指定 link_identifier,則使用上一個打開的連接。如果沒有打開的連接,本函數會嘗試無參數調用 mysql_connect() 函數來建立一個連接並使用禪如野之。查詢結果會被緩存橡團。
在本例中由於沒有指定link_identifier,所以,在執行第一條sql時,默認使用的是上一個打開的鏈接,即$conn2,而實際上第一條sql語句應該使用的是$conn1,所以導致報錯,所以為了能賀喊夠鏈接多個mysql資料庫,可以使用如下方法:
方法1:在mysql_query函數中指定所用連接,即:
代碼如下:
$conn1 = mysql_connect("127.0.0.1", "root","root","db1");
mysql_select_db("Muma", $conn1);
$conn2 = mysql_connect("127.0.0.1", "root","root","db2");
mysql_select_db("proct", $conn2);
$sql = "select * from ip";
$query = mysql_query($sql,$conn1); //添加連接$conn1
if($row = mysql_fetch_array($query))
echo $row[0]."";
$sql = "select * from web ";
$query = mysql_query($sql, $conn2);
if($row = mysql_fetch_array($query))
echo $row[0];
?
方法2:在sql語句中關聯所用資料庫,此時可以省略mysql_query的第二個參數,即:
代碼如下:
$conn1 = mysql_connect("127.0.0.1", "root","root","db1");
mysql_select_db("db1", $conn1);
$conn2 = mysql_connect("127.0.0.1", "root","root","db2");
mysql_select_db("db2", $conn2);
$sql = "select * from db1.ip"; //關聯資料庫
$query = mysql_query($sql);
if($row = mysql_fetch_array($query))
echo $row[0]."";
$sql = "select * from db2.web ";
$query = mysql_query($sql);
if($row = mysql_fetch_array($query))
echo $row[0];
?
4. 教你巧用PHP+MySQL搭建一個聊天室
MySQL並發能力強 響應速度快 是性能優異的資料庫軟體;PHP是功能強大的伺服器端腳本語言 筆者在山西鋁廠網站開發中 採用PHP +MySQL 建立了多種應用 下面 以一個簡單的聊天室設計為例 介紹PHP+MySQL在網頁開發中的應用總體設計
構思與規劃:
聊天室的基本原理 就是把每個連上同一網頁的用戶傳送的發言數據儲存起來 然後將所有的發言數據傳給每一用戶 也就是說 用資料庫匯集每個人的發言 並將資料庫中的數據傳給每一個人就實現了聊天室的功能
表設計
首先使用MySQL建立表chat用來儲存用戶的發言:
mysql> CREATE TABLE chat > (chtime DATATIME > nick CHAR( ) NOT NULL >words CHAR( ));
表中只設定了三個域 chtime是發言的時間 nick為發言者的昵稱 words是發言的內容 發言最多 個字元
網頁設計
一個最簡單的聊天室通常需要兩個頁框:一個頁讓虧框是用戶輸入發言的表單 另一個用來顯示大家的發言 所以代碼段通常至少需要如下幾段:
建立頁框的結構(main php)
顯示大家發言的程序段(cdisplay php)
傳送用戶發言的程序段(speak php)
用戶登錄進入聊天室程序段(login php)
代碼設計
以上規劃完成後 就可以著手代碼設計了 採用php可以非常簡明實現以上的功能
用戶登錄login php 本段代碼是一個完全HTML網頁
<> <head> <title>用戶登錄</title> </head> <body>請輸入您的昵稱<br> <form action= main php method= post target= _self > <input type= text name= nick cols= > <input type= submit value= 登錄 > </body> </>
用戶提交自己的昵稱後 就進入到聊天室 以下的處理交由main php處理
頁框主體代碼段main php:
<? 迅李setcookie( nick $nick) //用cookie記錄用戶昵稱 是常用的傳遞變數方法 ?> <> <title>山西鋁廠聊天室試用版ver </title> <frameset rows= % * > <frame src= cdisplay php name= chatdisplay > <frame src= speak php name= speak > </frameset> </>
顯示發言cdisplay php
本代碼段的任務是將表chat中的數據取出 顯示在頁框中 每次刷新時 取資料庫中最近的 條發言 同時 為防止資料庫無限增大 需設計刪除陳舊數據的功能 代碼如下
<> <head> <title>顯示用戶發言</title> <meta equiv= refresh content= ;url=cdisplay php > </head> <body> <? $link_ID=mysql_connect( main root ); //鏈接Mysql伺服器 伺服器名為main 管理員名為root 畝滑遲mysql_select_db( abc ); //選擇資料庫 $str= select * from chat ORDER BY chtime; ; //查詢字元串 $result=mysql_query($str $link_ID); //送出查詢 $rows=mysql_num_rows($result); //取得查詢結果的記錄筆數 //取得最後 筆發言 並顯示 @mysql_data_seek($resut $rows ); //移動記錄指針到前 筆記錄 if ($rows< ) $l=$rows; else $l= ; //記錄總數小於 則最多為該記錄數 for ($i= ;$i<=$l;$i++) { list($chtime $nick $words)=mysql_fetch_row($result); echo $chtime; echo ;echo $nick; echo : ; echo $words; echo <BR> ; } //清除庫中過時的數據 @mysql_data_seek($result $rows ); //移動記錄指針到前 筆記錄 list($limtime)=mysql_fetch_row($result); $str= DELETE FROM chat WHERE chtime< $limtime ; ; $result=mysql_query($str $link_ID); //送出查詢字元串 庫中只留前 個記錄 mysql_close($link_ID); ?> </body> </>
送出發言到資料庫speak php
<> <head> <title>發言</title> </head> <body> <? If ($words) { $link_ID=mysql_connect( main root ); mysql_select_db( abc ); //資料庫名為abc $time=date(y) date(m) date(d) date(h) date(i) (date(s); //取得當前時間 $str= INSERT INTO chat(chtime nick words) values ( $time $nick $words ); ; mysql_query($str $link_ID); //送出發言到資料庫 mysql_close($link_ID); } ?> //輸入發言的表單 <form action= speak php method= post target= _self > <input type= text name= words cols= > <input type= submit value= 發言 > </form> </body> </>
lishixin/Article/program/PHP/201311/21516
5. 誰給個php操作mysql類並有詳細使用說明或例子
下面這個,是針對php5的一個簡單資料庫封裝類,適合學習,其他的如刪除、更新等操作,你可以自己加上:
<?php
class Mysql{ //首先定義一個類,首寫字母大寫
public $host;//伺服器名,訪問修飾符PUBLIC證明$host是一個公共的屬情在類的內部外部都可訪問,可以被繼承
public $user;//用戶名,是公共的屬性
private $pass;//密碼,問修飾符private證明$pass是私有的.只能在類的內部使用且不能被繼承.
public $dbname;//資料庫名,也是公共的屬性.
//__construct聲名這是一個造函數,定義一些初始的信息.有三個參數
public function __construct($host,$user,$pass,$dbname){
$this->host = $host;
$this->慧雀user = $user;
$this->戚晌pass = $pass;
$this->dbname = $dbname;
$link = @mysql_connect($this->host,$this->user,$this->pass)
or die("error");
@mysql_select_db($this->dbname,$link)
or die("error2");
}
//定義資料庫的查尋和顯示函數
function myQuery($sql){
$result = mysql_query($sql);
if(!$result){
echo "error3";
exit;
}
$num = mysql_num_rows($result);
if($num){
echo "NO".$num;
}
while($row = mysql_fetch_assoc($result)){
echo '<tr><td bgcolor="#fffddd"><pre>'.htmlspecialchars(stripslashes($row['body']))."<pre></td></tr>";
}
}
}
$rutt = new Mysql('localhost','root','ssss','calvin');//實例化一個類...記住這里的參數是和構高碧鋒造函數的參數一樣的...
$rutt->myQuery('select * from calvin_body');//運行資料庫查尋並顯示的函數..
?>
下面這個是針對php5以下版本的資料庫封裝類,體現了php類的繼承,一個許願版程序的:
<?php
/*
* FileName: DatabaseSQL.inc.php
* Author: Terry
* Function: 建立DatabaseSQL對象,實現對資料庫的基本操作
* Version : Blue-System v2.0
* CreateDate: 2004-03-10
* Copyright: Blue-Workshop / http://www.blue4me.net
*/
// 定義DatabaseSQL對象
Class DatabaseSQL
{
var $CONN = ""; // 連接號
var $HOST = "Localhost"; // 主機名
var $USER = ""; // 用戶名
var $PASSWORD = ""; // 密碼
// DatabaseSQL類的構造函數
function DatabaseSQL($DBNAME)
{
$user = $this -> USER;
$password = $this -> PASSWORD;
$host = $this -> HOST;
$db = $DBNAME;
// 連接資料庫
$conn = mysql_connect($host, $user, $password);
mysql_select_db($db, $conn);
$this -> CONN = $conn;
return true;
}
// 定義查詢操作
function select($strSQL = "")
{
if ( empty($strSQL) ) return false;
if ( empty($this -> CONN) ) return false;
$conn = $this -> CONN;
// 發送SQL語句,獲得結果
$result = mysql_query($strSQL, $conn);
if ( (!$result) or (empty($result)) ) {
return false;
}
$num = 0;
$data = array();
// 將查詢結果放二維數組中
while ( $row = mysql_fetch_array($result) ) {
$data[$num] = $row;
$num++;
}
mysql_free_result($result);
return $data;
}
// 定義插入操作
function insert($strSQL = "")
{
if ( empty($strSQL) ) return false;
if ( empty($this -> CONN) ) return false;
$conn = $this -> CONN;
// 發送SQL語句,插入新數據
$result = mysql_query($strSQL, $conn);
if ( !result ) return false;
// 獲得記錄的id號
$result = mysql_insert_id();
return $result;
}
// 定義更新操作
function update($strSQL = "")
{
if ( empty($strSQL) ) return false;
if ( empty($this -> CONN) ) return false;
$conn = $this -> CONN;
// 發送SQL語句,更新資料庫
$result = mysql_query($strSQL, $conn);
return $result;
}
// 定義刪除操作
function delete($strSQL = "")
{
if ( empty($strSQL) ) return false;
if ( empty($this -> CONN) ) return false;
$conn = $this -> CONN;
// 發送SQL語句,刪除記錄
$result = mysql_query($strSQL, $conn);
return $result;
}
}
?>
----------------------------------
<?php
/*
* FileName: Wish.inc.php
* Author: Terry
* Function: 建立Wish對象,實現對許願板進行操作功能
* Version : Blue-System v2.0
* CreateDate: 2004-03-10
* Copyright: Blue-Workshop / http://www.blue4me.net
*/
require "config.inc.php";
require "DatabaseSQL.inc.php";
// 定義Wish對象
Class Wish extends DatabaseSQL
{
// 構造函數
function Wish()
{
$DBName = $GLOBALS["dbname"];
$this -> DatabaseSQL($DBName);
}
// 添加新願望(use in wish/save.php?action=add_wish)
function AddWish($name,$receiver,$type,$address,$content,$hide,$addtime)
{
$strSQL = "insert into Wish (Name, Receiver, Type, Address, Content, Hide, AddTime) values ('$name', '$receiver', '$type', '$address', '$content', '$hide', '$addtime')";
$result = $this -> insert($strSQL);
return $result;
}
// 修改指定id的願望內容(use in save.php?action=edit_wish)
function EditWish($wid,$name,$receiver,$type,$address,$content,$hide)
{
$strSQL = "update `Wish` set `Name` = '$name', `Receiver` = '$receiver', `Type` = '$type', `Address` = '$address', `Content` = '$content', `Hide` = '$hide' where `WID` = '$wid' ";
$result = $this -> update($strSQL);
return $result;
}
// 願望列表(use in index.php)
function ListWish($startid,$list_nums)
{
$strSQL = "select * from Wish order by AddTime desc LIMIT $startid,$list_nums";
$result = $this -> select($strSQL);
return $result;
}
// 獲取指定願望信息(use in index.php?go=view_wish)
function GetWish($wid)
{
$strSQL = "select * from Wish where WID = '$wid'";
$result = $this -> select($strSQL);
return $result;
}
// 更新指定願望的瀏覽數(use in index.php?go=view_wish)
function UpdateHit($wid)
{
$strSQL = "update `Wish` set `Hit` = ( `Hit` + 1 ) where `WID` = '$wid'";
$result = $this -> update($strSQL);
return $result;
}
// 刪除指定願望信息(use in save.php?action=del_wish)
function DelWish($wid)
{
$strSQL = "delete from Wish where WID = '$wid'";
$result = $this -> delete($strSQL);
return $result;
}
}
?>
---------------------------------------
<?php
/*
* FileName: config.inc.php
* Author: Terry
* Function: 系統基本設置
* Version : B.S - Wish v1.0
* CreateDate: 2004-03-19
* Copyright: Blue-Workshop
* Tec-Support: http://www.blue4me.net / http://feeltouch.8u8.com
* Attention: 請保留版權信息,謝謝 ^_^
*/
// 資料庫信息
$dbhost = "Localhost"; /* 主機名 */
$dbuser = ""; /* 資料庫用戶 */
$dbpwd = ""; /* 資料庫密碼 */
$dbname = "BS_Wish"; /* 資料庫名 */
// 管理員信息
$adminname = "blue"; /* 初始化管理員 */
$adminpwd = "blue"; /* 初始化管理密碼 */
?>
6. php mysql怎麼創建資料庫圖解
在一個伺服器上一般來講都不止一個站點,更不止一個MySQL(和PHP搭配之最佳組合)資料庫。
為了防止安全隱患,我們一般針對每個資料庫都設置了獨立的資料庫訪問帳號,該帳號僅有訪問該資料庫的許可權。下面就讓我們來具體演示一下:
1、首先我們要登陸php(做為現在的主流開發語言)MyAdmin,不做演示。
4、在主界面的右邊點擊「許可權」來創建資料庫帳號。
5、在許可權頁面中,我們點擊「添加新用戶」
6、在該頁面中,我們填寫要創建的資料庫用戶名,該用戶的訪問范圍,及密碼。
如上圖,我們填寫了用戶名為:cncmsuser,該資料庫用戶只允許本機訪問,主機一項選擇本地;密碼我們使用自動生成的,點下面的「Generate」會生成一個隨機密碼,然後點「Copy」會自動填寫到密碼框中。
下面的框都不選,直接拉到頁面最下面點執行即可創建一個新用戶。
資料庫用戶創建成功,會返回如下頁面:
7、最重要的一步,設置該用戶的資料庫訪問許可權
在資料庫用戶添加成功返回的頁面中可以直接設置許可權。這里我們選擇按資料庫指定許可權:
如上圖,在資料庫列表中選擇我們剛剛創建的cncmstest,即會自動進入該資料庫的許可權設置頁面。
在上圖的許可權設置中,我們把「數據」、「結構」兩列的許可權全部選中,管理許可權都不要選。點執行即可。
到這里,我們已經全部設置完畢了,創建了一個資料庫:cncmstest,並創建了資料庫用戶cncmsuser,特別指定了該用戶只對cncmstest的訪問許可權。如此,便達到了我們一開始所講的目的:為每一個資料庫指定獨立的用戶訪問許可權。