php下操作mysql詳解之初級!(物件導向,程式導向)

科技小能手發表於2017-11-12

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),`郭

路@sohu.com`,24);

wps_clip_image-29793

wps_clip_image-2147

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); //要不要無所謂

?>

wps_clip_image-8479

wps_clip_image-21396

Sql語句換成刪除:

$sql=”delete  from user where id=4″;

wps_clip_image-5478

$sql=”update user set age=26 where name=`lzw`”;

wps_clip_image-5836

將上面的檔案,封裝成類,提高複用性!

兩個檔案:

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;

}

    }

  }

}

?>

wps_clip_image-1721

命令改為$sql=”delete from user where id=3″;

wps_clip_image-16513

//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);

執行結果如下:

wps_clip_image-1199

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();

?>

wps_clip_image-30977

由於上面少了這個$msi->query(“set names utf8”);所以出現漢字的亂碼

wps_clip_image-22824

正常了!

例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);

?>

wps_clip_image-16975

wps_clip_image-26420

如何區分這幾個?

通過上面的程式修改演示:

while($row=mysqli_fetch_row($res)){

print “<pre>”;

var_dump($row);

print “</pre>”;

echo “<br/>”;

}

wps_clip_image-8174

上面是以下標

while($row=mysqli_fetch_assoc($res)){

print “<pre>”;

var_dump($row);

print “</pre>”;

echo “<br/>”;

}

wps_clip_image-26161

上面是以欄位名,如id

wps_clip_image-19971

wps_clip_image-752

例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();

?>

wps_clip_image-2667

執行了2次,新增了2條

wps_clip_image-32479

把sql語句改為:(不存在的id)

$sql=”update  user set name=`haha` where id=11″;

wps_clip_image-18373

$sql=”update  user set name=`haha` where id=9″;

wps_clip_image-25984

$sql=”delete from user where name=`haha`”;

增刪改都使用了,這裡我們來封裝成工具類

wps_clip_image-8570

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 “沒有受影響的行數”;

}

}

?>

wps_clip_image-30923

運算元據庫成功如下:

wps_clip_image-18311

本文轉自 gjp0731 51CTO博http://blog.51cto.com/guojiping/1323187客,原文連結:


相關文章