php下操作mysql詳解之初級!(物件導向,程式導向)
mysql> create table user(
-> id int primary key auto_increment,
-> name varchar(32) not null,
-> password varchar(64) not null,
-> email varchar(128) not null,
-> age tinyint unsigned not null
-> );
mysql> insert into user (name,password,email,age) values(“gjp”,md5(123456),`gjp@
sohu.com`,24);
mysql> insert into user (name,password,email,age) values(“郭盧”,md5(123456),`郭
Mysql客戶端的限制,只能接受gbk碼,utf8不支援,資料庫是支援的
<?php
$conn=mysql_connect(“localhost”,”root”,”123456″);
if(!$conn)
{
die(“出錯了”.mysql_errno());
}
mysql_select_db(“test”,$conn) or die(mysql_errno());
mysql_query(“set names utf8”);
$sql=”insert into user (name,password,email,age) values(`zhangsan`,md5(`123`),`zs@163.com`,34)”;
$res=mysql_query($sql,$conn);
if(!$res)
{
echo “操作失敗”;
}
if (mysql_affected_rows($conn)>0)
{
echo “操作成功!”;
}else{
echo “沒有受影響的行數!”;
}
mysql_close($conn); //要不要無所謂
?>
Sql語句換成刪除:
$sql=”delete from user where id=4″;
$sql=”update user set age=26 where name=`lzw`”;
將上面的檔案,封裝成類,提高複用性!
兩個檔案:
index.php
1. <?php
2. require_once `Sqltool.php`;
3. $sql=”insert into user(name,password,email,age) values(`lisi`,md5(`123`),`ls@163.com`,36)”;
4. $sqlTool=new Sqltool();
5. $res=$sqlTool->execute_dml($sql);
6. if($res==0){
7. echo “失敗”;
8. }else if($res==1){
9. echo “success”;
10. }else if($res==2){
11. echo “沒有受影響的行數”;
12. }
13. ?>
Sqltool.php
<?php
class Sqltool
{
private $conn;
private $host=”localhost”;
private $user=”root”;
private $password=”123456″;
private $db=”test”;
function Sqltool()
{
$this->conn=mysql_connect($this->host,$this->user,$this->password);
if(!$this->conn)
{
die(“fail”.mysql_error());
}
mysql_select_db($this->db,$this->conn);
mysql_query(“set names utf8”);
}
//dql 針對select
public function execute_dql($sql)
{
$res=mysql_query($sql,$this->conn)or die(mysql_error());
return $res;
}
// dml語句是針對update delete insert 命令,返回值為true false
public function execute_dml($sql)
{
echo $sql;
$b=mysql_query($sql,$this->conn);
if(!$b)
{
return 0;
}else {
if(mysql_affected_rows($this->conn)>0)
{
return 1;
}else{
return 2;
}
}
}
}
?>
命令改為$sql=”delete from user where id=3″;
//DQL語句獲取的是結果集,執行這的時候,要將dml語句先註釋掉
$sql=”select * from user”;
$sqlTool=new Sqltool();
$res=$sqlTool->execute_dql($sql);
while($row=mysql_fetch_row($res))
{
foreach ($row as $key=>$val)
{
echo “–$val”;
}
echo “<br/>”;
}
mysql_free_result($res);
執行結果如下:
MYSQli的講解2!
在php.ini 中開啟
extension=php_mysqli.dll
例1:使用物件導向的方式
<?php
//header(“Content-type: text/html; charset=utf-8”);
//1.建立mysql物件
$msi=new mysqli(“localhost”,”root”,”123456″,”test”);
//驗證是否ok
if($msi->cononnect_error){
die(“連線失敗”.$msi->connect_error);
}else {
echo “連線ok”.”</br>”;
}
//2.運算元據庫(傳送sql命令)
$sql=”select * from user “;
$res=$msi->query($sql);
/* echo “</br>”;
print “<pre>”;
var_dump($res);
print”</pre>”; */
//3.處理結果
while($row=$res->fetch_row()){
foreach ($row as $key=>$val){
echo “–$val”;
}
echo “<br/>”;
}
//4.關閉資源
//釋放記憶體;
$res->free();
//關閉連結
$msi->close();
?>
由於上面少了這個$msi->query(“set names utf8”);所以出現漢字的亂碼
正常了!
例2:用程式導向的方法
<?php
header(“Content-type: text/html; charset=utf-8”);
//1.得到mysqli連線
$msi=mysqli_connect(“localhost”,”root”,”123456″,”test”);
if(!$msi){
die(“連線失敗”.mysqli_connect_errno($msi));
}
//2.向資料庫傳送sql語句(ddl dml dql)
$sql=”select * from user”;
$res=mysqli_query($msi,$sql);
//var_dump($res);
//3.處理得到的結果
//迴圈取出結果集
while($row=mysqli_fetch_row($res)){
foreach($row as $key=>$val){
echo “–$val”;
}
echo “<br/>”;
}
//4.關閉資源
mysqli_free_result($res);
mysqli_close($msi);
?>
如何區分這幾個?
通過上面的程式修改演示:
while($row=mysqli_fetch_row($res)){
print “<pre>”;
var_dump($row);
print “</pre>”;
echo “<br/>”;
}
上面是以下標
while($row=mysqli_fetch_assoc($res)){
print “<pre>”;
var_dump($row);
print “</pre>”;
echo “<br/>”;
}
上面是以欄位名,如id
例3:
<?php
//1.建立mysql物件
$msi=new mysqli(“localhost”,”root”,”123456″,”test”);
//驗證是否ok
if($msi->cononnect_error){
die(“連線失敗”.$msi->connect_error);
}else {
echo “連線ok”.”</br>”;
}
//2.運算元據庫(傳送sql命令)
$msi->query(“set names utf8”);
$sql=”insert into user (name,password,email,age) values(`李想`,md5(`aaaa`),`lixiang@163.com`,18)”;
$res=$msi->query($sql);
//3.處理結果
if(!$res){
echo “操作失敗”.$msi->error;
}else{
//影響多少行記錄
if($msi->affected_rows>0){
echo “執行ok”;
}else{
echo “沒有受影響的行數”;
}
}
//4.關閉資源
//關閉連結
$msi->close();
?>
執行了2次,新增了2條
把sql語句改為:(不存在的id)
$sql=”update user set name=`haha` where id=11″;
$sql=”update user set name=`haha` where id=9″;
$sql=”delete from user where name=`haha`”;
增刪改都使用了,這裡我們來封裝成工具類
Mysqli封裝為工具類sqlHelper:
<?php
class sqlHelper{
private $mysqli;
private static $host=”localhost”;
private static $user=”root”;
private static $pwd=”123456″;
private static $db=”test”;
//下面這個函式__construct()其實是兩個下劃線,下面由於我寫了一個,所以無法自動呼叫
該函式,需要手動調,如果寫成兩個_,建立物件時,則會自動調!
public function _construct(){
$this->mysqli=new mysqli(self::$host,self::$user,self::$pwd,self::$db);
if($this->mysqli->connect_error){
die(“連線失敗”.$this->mysqli->connect_error);
}else{
echo “success”; //為了除錯
}
//設定訪問資料庫的字符集,保證php是以utf8的方式來操作我們的mysql資料庫
$this->mysqli->query(“set names utf8”);
}
public function execute_dql($sql){
$res=$this->mysqli->query($sql) or die(“操作dql”.$this->mysqli->error);
return $res;
}
public function execute_dml($sql){
echo $sql; //為了除錯
$res=$this->mysqli->query($sql) or die(“操作
dql”.$this->mysqli->error);
echo $res;//為了除錯
if(!$res){
return 0;
}else{
if($this->mysqli->affected_rows>0){
return 1;
}else {
return 2;
}
}
}
}
使用工具類,實現其功能:
<?php
require_once `sqlHelper.php`;
//header(“Content-type: text/html;charset=utf-8”);
//建立sqlHelper物件
$sqlhelper=new sqlHelper();
$sql=”insert into user(name,password,email,age) values(`盧偉da`,md5(`aaaa`),`lzw@sohu.com`,`8`)”;
$sqlhelper->_construct();
$res=$sqlhelper->execute_dml($sql);
if($res==0){
echo “失敗”;
}else {
if($res==1){
echo “恭喜,成功!”;
}else{
echo “沒有受影響的行數”;
}
}
?>
運算元據庫成功如下:
本文轉自 gjp0731 51CTO博http://blog.51cto.com/guojiping/1323187客,原文連結:
相關文章
- php中的程式導向與物件導向PHP物件
- PHP物件導向PHP物件
- 程式導向與物件導向物件
- 物件導向與程式導向物件
- PHP 物件導向 (九)物件導向三大特徵PHP物件特徵
- 從程式導向到物件導向物件
- PHP MySQL (三)物件導向 事務PHPMySql物件
- 物件導向(下)物件
- 物件導向--下物件
- PHP物件導向(三)PHP物件
- 物件導向-物件導向思想物件
- Java物件導向詳解-上Java物件
- JavaScript物件導向詳解(原理)JavaScript物件
- 談談“物件導向”與“程式導向”物件
- python-程式導向、物件導向、類Python物件
- PHP物件導向之&引用PHP物件
- PHP物件導向基礎PHP物件
- php物件導向--繼承PHP物件繼承
- JavaScript物件導向名詞詳解JavaScript物件
- 物件導向08:封裝詳解物件封裝
- “程序導向”和“物件導向”物件
- 解釋下什麼是物件導向?物件導向和麵向過程的區別?物件
- PHP基礎之物件導向講解PHP物件
- 淺談PHP物件導向程式設計PHP物件程式設計
- PHP 物件導向 (十一)反射類PHP物件反射
- PHP 物件導向 (十)TraitsPHP物件AI
- PHP 物件導向基礎概念PHP物件
- PHP 核心技術 --物件導向PHP物件
- PHP學習4——物件導向PHP物件
- php物件導向知識點PHP物件
- PHP物件導向07_PDOPHP物件
- python物件導向(下)Python物件
- iOS 開發之 OOA (物件導向分析) & OOD (物件導向設計)& OOP (物件導向程式設計)iOS物件OOP程式設計
- 物件導向物件
- JAVA物件導向基礎--物件導向介紹Java物件
- PHP物件導向程式設計基本原則PHP物件程式設計
- 物件導向與解耦物件解耦
- 物件導向程式設計物件程式設計