国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

其實今天沒有欲望..-MySQLi

2019-11-14 14:37:07
字體:
來源:轉載
供稿:網友

  hi

中午爽爽的游了會兒泳,但是下午把一拳超人看完了,竟然萌生不出學習的欲望了。。。強迫自己更新點東西吧,一會兒看書去。

1、MySQLi

二、MySQLi基于OOP的編程

2.1 使用解析

--基本

MySQLi是一個拓展類庫,本質上是個類(?)。

一般流程和MySQL一樣:連接,選庫,字符集設定,SQL語句執行,關閉連接

--鏈接庫例子

<?php
/*
* 連接和選庫
*/
$mysqli=new mysqli('localhost', 'root', '');

echo $mysqli->select_db('test');echo "<br/>";

$mysqli2=new mysqli();
print_r($mysqli2->connect('localhost', 'root', ''));echo "<br/>";

print_r($mysqli3=new mysqli('localhost', 'root', '','test'));echo "<br/>";

三種不同的方法,這里的方法都是利用mysqli的類屬性來做的;當然也可以利用mysqli的命令來鏈接;

$con=mysqli_connect(HOST,USERNAME,PASSWord)

結果中有一些信息

mysqli Object
 (
 [affected_rows] => 0
 [client_info] => mysqlnd 5.0.11-dev - 20120503 - $Id: bf9ad53b11c9a57efdb1057292d73b928b8c5c77 $
 [client_version] => 50011
 [connect_errno] => 0
 [connect_error] =>
 [errno] => 0
 [error] =>
 [error_list] => Array
 (
 )
  
 [field_count] => 0
 [host_info] => localhost via TCP/ip
 [info] =>
 [insert_id] => 0
 [server_info] => 5.6.17
 [server_version] => 50617
 [stat] => Uptime: 968 Threads: 1 Questions: 24 Slow queries: 0 Opens: 70 Flush tables: 1 Open tables: 63 Queries per second avg: 0.024
 [sqlstate] => 00000
 [protocol_version] => 10
 [thread_id] => 11
 [warning_count] => 0
 )

這些屬性都是可以通過對象的屬性來得到的,比如

echo $mysqli->client_info;echo "<br/>";

或者是通過相對應的方法得到,這些東西查手冊可以看到。

<?php
header('content-type:text/html;charset=utf-8');
//1.建立到MySQL數據的連接
// $mysqli=new mysqli('localhost','root','root');
// //print_r($mysqli);
// //2.打開指定的數據庫
// $mysqli->select_db('test');
// $mysqli=new mysqli();
// $mysqli->connect('127.0.0.1','root','root');
// print_r($mysqli);

//建立連接的同時打開指定數據庫
$mysqli=@new mysqli('localhost','root','root','test');
//print_r($mysqli);
//$mysqli->connect_errno:得到連接產生的錯誤編號
//$mysqli->connect_error:得到連接產生的錯誤信息
if($mysqli->connect_errno){
die('Connect Error:'.$mysqli->connect_error);
}
print_r($mysqli);
echo '<hr color="red"/>';
echo '客戶端的信息:'.$mysqli->client_info.'<br/>';
echo $mysqli->get_client_info().'<br/>';
echo '客戶端的版本:'.$mysqli->client_version.'<br/>';
echo '<hr/>';
echo '服務器端信息:'.$mysqli->server_info.'<br/>';
echo $mysqli->get_server_info();
echo '<hr/>';
echo '服務器版本:'.$mysqli->server_version.'<br/>';

echo '<hr/>';

--字符集例子

<?php
//1.建立到MySQL的連接
$mysqli=@new mysqli('localhost','root','root','test');
if($mysqli->connect_errno){
die('Connect Error:'.$mysqli->connect_error);
}
//2.設置默認的客戶端編碼方式utf8
$mysqli->set_charset('utf8');

//3.執行SQL查詢
$sql=<<<EOF
CREATE TABLE IF NOT EXISTS mysqli(
id TINYINT UNSIGNED AUTO_INCREMENT KEY,
username VARCHAR(20) NOT NULL
);
EOF;
$res=$mysqli->query($sql);
var_dump($res);

/*
SELECT/DESC/DESCRIBE/SHOW/EXPLAIN執行成功返回mysqli_result對象,執行失敗返回false
對于其它SQL語句的執行,執行成功返回true,否則返回false
*/
//關閉連接
$mysqli->close();

需要注意的是數據庫中的是utf8,而不是utf-8;

2.2 插入記錄操作

增。

--connect.php

因為連接數據庫的一系列操作是常用的,對于這種,我們簡便的方法就是封裝起來,到處調用

require_once 'connect.php';

connect.php

<?php
/*
* 連接和選庫(頭)文件
*/
$mysqli=new mysqli('localhost', 'root', '','test');
if($mysqli->connect_errno){
die('Connect Error:'.$mysqli->connect_error);
}else{
echo '客戶端的信息:'.$mysqli->client_info.'<br/>';
}
$mysqli->set_charset('utf8');

--增

<?php
/*
* 數據庫插入數據
*/

require_once 'connect.php';

$sql="insert mysqli(username) value('Tom')";
echo $mysqli->query($sql);

這里執行的是單條的sql語句。

或者完善一點,添加一個判斷,并輸出錯誤信息。

if($res){
echo $mysqli->insert_id;
}else{
echo 'ERROR '.$mysqli->error;
}

或者,插入多條記錄

$sql="insert mysqli(username) value('Sdaf'),('Andy')";

2.3 更新記錄

更新。

$sql="update test set id=id+10";
$mysqli->query($sql);

2.4 刪除

$sql="delete from mysqli where id>=2";

--

特別說明,affected_rows返回的情況有三種:

-1  sql語句有問題;

0 沒有受影響的語句;

>=0 受影響的條數。

--小結

<?php
header('content-type:text/html;charset=utf-8');
$mysqli=new mysqli('localhost','root','root','test');
if($mysqli->connect_errno){
die('CONNECT ERROR:'.$mysqli->connect_error);
}
$mysqli->set_charset('utf8');

//執行SQL查詢
//添加記錄
//執行單條SQL語句,只能執行一條SQL語句
// $sql="INSERT user(username,password) VALUES('king','king');";
// $sql.="DROP TABLE user;";
$sql="INSERT user(username,password) VALUES('queen1','queen1'),('queen2','queen2'),('queen3','queen3'),('queen4','queen4')";
$res=$mysqli->query($sql);
if($res){
//得到上一插入操作產生的AUTO_INCREMENT的值
echo '恭喜您注冊成功,您是網站第'.$mysqli->insert_id.'位用戶<br/>';
//得到上一步操作產生的受影響記錄條數
echo '有'.$mysqli->affected_rows.'記錄被影響';
}else{
//得到上一步操作產生的錯誤號和錯誤信息
echo 'ERROR '.$mysqli->errno.':'.$mysqli->error;
}
echo '<hr/>';

//將表中年齡+10
$sql="UPDATE user SET age=age+10";
$res=$mysqli->query($sql);
if($res){
echo $mysqli->affected_rows.'條記錄被更新';
}else{
echo "ERROR ".$mysqli->errno.':'.$mysqli->error;
}
echo '<hr/>';

//將表中id<=6的用戶刪除掉
$sql="DELETE FROM user WHERE id<=6";
$res=$mysqli->query($sql);
if($res){
echo $mysqli->affected_rows.'條記錄被刪除';
}else{
echo "ERROR ".$mysqli->errno.':'.$mysqli->error;
}
//關閉到MySQL的連接
$mysqli->close();

2.5 查

需要注意的是,用的是select,所以返回的是結果集,是可以打印出來的print_r或var_dump。

所以這里就要說一下,返回的結果集的選擇了。

<?php
header('content-type:text/html;charset=utf-8');
$mysqli=new mysqli('localhost','root','root','test');
if($mysqli->connect_errno){
die('CONNECT ERROR:'.$mysqli->connect_error);
}
$mysqli->set_charset('utf8');
$sql="SELECT id,username,age FROM user";
$mysqli_result=$mysqli->query($sql);
//var_dump($mysqli_result);
if($mysqli_result && $mysqli_result->num_rows>0){
//echo $mysqli_result->num_rows;
//$rows=$mysqli_result->fetch_all();//獲取結果集中所有記錄,默認返回的是二維的
//索引+索引的形式
//$rows=$mysqli_result->fetch_all(MYSQLI_NUM);
//$rows=$mysqli_result->fetch_all(MYSQLI_ASSOC);
//$rows=$mysqli_result->fetch_all(MYSQLI_BOTH);
// $row=$mysqli_result->fetch_row();//取得結果集中一條記錄作為索引數組返回
// print_r($row);
// echo '<hr/>';
// $row=$mysqli_result->fetch_assoc();//取得結果集中的一條記錄作為關聯數組返回
// print_r($row);
// echo '<hr/>';
// $row=$mysqli_result->fetch_array();//二者都有的
// print_r($row);

// echo '<hr/>';
// $row=$mysqli_result->fetch_array(MYSQLI_ASSOC);
// print_r($row);

// echo '<hr/>';
// $row=$mysqli_result->fetch_object();
// print_r($row);
// echo '<hr/>';
// //移動結果集內部指針
// $mysqli_result->data_seek(0);
// $row=$mysqli_result->fetch_assoc();
// print_r($row);

// print_r($rows);

while($row=$mysqli_result->fetch_assoc()){
//print_r($row);
//echo '<hr/>';
$rows[]=$row;
}
print_r($rows);

//釋放結果集
$mysqli_result->free();


}else{
echo '查詢錯誤或者結果集中沒有記錄';
}
$mysqli->close();

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阿鲁科尔沁旗| 安丘市| 门源| 赤峰市| 香河县| 阿城市| 都匀市| 临颍县| 元阳县| 巴塘县| 米泉市| 博乐市| 布拖县| 鹰潭市| 沭阳县| 清原| 宁夏| 张北县| 旬邑县| 贵州省| 青浦区| 岳阳县| 沙洋县| 丁青县| 维西| 河曲县| 多伦县| 桂平市| 屏边| 栾城县| 宁安市| 买车| 崇州市| 天长市| 逊克县| 伊通| 三河市| 新民市| 神池县| 邳州市| 西林县|