目錄
其实今天没有欲望..-MySQLi,欲望..-MySQLi
首頁 php教程 php手册 其实今天没有欲望..-MySQLi,欲望..-MySQLi

其实今天没有欲望..-MySQLi,欲望..-MySQLi

Jun 13, 2016 am 08:49 AM
中午

其实今天没有欲望..-MySQLi,欲望..-MySQLi

  hi

中午爽爽的游了会儿泳,但是下午把一拳超人看完了,竟然萌生不出学习的欲望了。。。强迫自己更新点东西吧,一会儿看书去。

1、MySQLi

二、MySQLi基于OOP的编程

2.1 使用解析

--基本

MySQLi是一个拓展类库,本质上是个类(?)。

一般流程和MySQL一样:连接,选库,字符集设定,SQL语句执行,关闭连接

--链接库例子

/*
* 连接和选库
*/
$mysqli=new mysqli('localhost', 'root', '');
print_r($mysqli);echo "
";

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

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

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

三种不同的方法,这里的方法都是利用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 "
";

或者是通过相对应的方法得到,这些东西查手册可以看到。

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 '


';
echo '客户端的信息:'.$mysqli->client_info.'
';
echo $mysqli->get_client_info().'
';
echo '客户端的版本:'.$mysqli->client_version.'
';
echo '
';
echo '服务器端信息:'.$mysqli->server_info.'
';
echo $mysqli->get_server_info();
echo '
';
echo '服务器版本:'.$mysqli->server_version.'
';

echo '


';

--字符集例子

//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= 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

/*
* 连接和选库(头)文件
*/
$mysqli=new mysqli('localhost', 'root', '','test');
if($mysqli->connect_errno){
die('Connect Error:'.$mysqli->connect_error);
}else{
echo '客户端的信息:'.$mysqli->client_info.'
';
}
$mysqli->set_charset('utf8');

--增

/*
* 数据库插入数据
*/

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 受影响的条数。

--小结

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.'位用户
';
//得到上一步操作产生的受影响记录条数
echo '有'.$mysqli->affected_rows.'记录被影响';
}else{
//得到上一步操作产生的错误号和错误信息
echo 'ERROR '.$mysqli->errno.':'.$mysqli->error;
}
echo '


';

//将表中年龄+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 '


';

//将表中id$sql="DELETE FROM user WHERE id$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。

所以这里就要说一下,返回的结果集的选择了。

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 '


';
// $row=$mysqli_result->fetch_assoc();//取得结果集中的一条记录作为关联数组返回
// print_r($row);
// echo '
';
// $row=$mysqli_result->fetch_array();//二者都有的
// print_r($row);

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

// echo '
';
// $row=$mysqli_result->fetch_object();
// print_r($row);
// echo '
';
// //移动结果集内部指针
// $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 '


';
$rows[]=$row;
}
print_r($rows);

//释放结果集
$mysqli_result->free();


}else{
echo '查询错误或者结果集中没有记录';
}
$mysqli->close();

 

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

如何在技嘉主機板上設定鍵盤啟動功能 (技嘉主機板啟用鍵盤開機方式) 如何在技嘉主機板上設定鍵盤啟動功能 (技嘉主機板啟用鍵盤開機方式) Dec 31, 2023 pm 05:15 PM

技嘉的主機板怎麼設定鍵盤開機首先,要支援鍵盤開機,一定是PS2鍵盤! !設定步驟如下:第一步:開機按Del或F2進入bios,到bios的Advanced(進階)模式普通主機板預設進入主機板的EZ(簡易)模式,需要按F7切換到進階模式,ROG系列主機板預設進入bios的進階模式(我們用簡體中文來示範)第二步:選擇到-【進階】-【進階電源管理(APM)】第三步:找到選項【由PS2鍵盤喚醒】第四步:這個選項預設是Disabled(關閉)的,下拉之後可以看到三種不同的設定選擇,分別是按【空白鍵】開機、按組

CS玩家的首選:建議的電腦配置 CS玩家的首選:建議的電腦配置 Jan 02, 2024 pm 04:26 PM

1.處理器在選擇電腦配置時,處理器是至關重要的組件之一。對於玩CS這樣的遊戲來說,處理器的效能直接影響遊戲的流暢度和反應速度。建議選擇IntelCorei5或i7系列的處理器,因為它們具有強大的多核心處理能力和高頻率,可以輕鬆應對CS的高要求。 2.顯示卡顯示卡是遊戲表現的重要因素之一。對於射擊遊戲如CS而言,顯示卡的表現直接影響遊戲畫面的清晰度和流暢度。建議選擇NVIDIAGeForceGTX系列或AMDRadeonRX系列的顯示卡,它們具備出色的圖形處理能力和高幀率輸出,能夠提供更好的遊戲體驗3.內存電

主機板上的數位音訊輸出介面-SPDIF OUT 主機板上的數位音訊輸出介面-SPDIF OUT Jan 14, 2024 pm 04:42 PM

主機板上SPDIFOUT連接線序最近我遇到了一個問題,就是關於電線的接線順序。我上網查了一下,有些資料說1、2、4對應的是out、+5V、接地;而有些資料則說1、2、4對應的是out、接地、+5V。最好的方法是查看你的主機板說明書,如果找不到說明書,你可以使用萬用電表進行測量。首先找到接地,然後就可以確定其他的接線順序了。主機板vdg怎麼接線連接主機板的VDG接線時,您需要將VGA連接線的一端插入顯示器的VGA接口,另一端插入電腦的顯示卡VGA接口。請注意,不要將其插入主機板的VGA介面。完成連接後,您可以

廣聯達軟體電腦設定推薦;廣聯達軟體對電腦的設定需求 廣聯達軟體電腦設定推薦;廣聯達軟體對電腦的設定需求 Jan 01, 2024 pm 12:52 PM

廣聯達軟體是一家專注於建築資訊化領域的軟體公司,其產品被廣泛應用於建築設計、施工、營運等各個環節。由於廣聯達軟體功能複雜、資料量大,對電腦的配置要求較高。本文將從多個方面詳細說明廣聯達軟體的電腦配置推薦,以幫助讀者選擇適合的電腦配置處理器廣聯達軟體在進行建築設計、模擬等操作時,需要進行大量的數據計算和處理,因此對處理器的要求較高。建議選擇多核心、高主頻的處理器,如英特爾i7系列或AMDRyzen系列。這些處理器具有較強的運算能力和多執行緒處理能力,能夠更好地滿足廣聯達軟體的需求。記憶體記憶體是影響計算

最佳顯示卡驅動版本是? (哪個顯示卡驅動版本最好用) 最佳顯示卡驅動版本是? (哪個顯示卡驅動版本最好用) Jan 10, 2024 pm 11:13 PM

哪个版本的显卡驱动最好用1、没有绝对的最好版本,选择适合自己电脑的版本最重要;2、因为显卡驱动版本的适用性和稳定性与电脑硬件环境和系统的配置有关;3、可以在官网查看电脑和显卡的详细信息,根据信息选择适合的驱动版本,也可以参考其他用户的评价选择。建议在安装驱动之前备份系统,以免出现意外情况。显卡驱动版本472.19系列是非常出色的选择。目前,472版本的驱动兼容性是最优秀的。安装472版本的驱动也能够使显卡发挥出最佳性能。NVIDIA显卡驱动Win7安装版,编号为2、472.19,是一款质量显著的

請推薦一款性價比較高的1155針CPU 請推薦一款性價比較高的1155針CPU Jan 14, 2024 pm 01:30 PM

求建議1155針的cpu哪個最好目前效能最高的1155針CPU是IntelCorei7-3770K。它擁有4個核心和8個線程,基礎頻率為3.5GHz,並支援TurboBoost2.0技術,最高可達到3.9GHz。此外,它還搭載了8MB的三級緩存,是一款非常出色的處理器LGA1155針最強的CPUIntel酷睿i73770K。 LGA1155介面為二三代酷睿處理器所使用的介面類型,效能最好的為Intel酷睿i73770K,這款處理器參數如下:1.適用類型:桌上型電腦;2.CPU系列:酷睿i7;3.CPU

我準備去西藏旅行背包去①背多少公升的包合適把你認為最好的配置說下本人170體力不錯第一次 我準備去西藏旅行背包去①背多少公升的包合適把你認為最好的配置說下本人170體力不錯第一次 Jan 07, 2024 am 10:06 AM

我準備去西藏旅行背包去①背多少升的包合適把你認為最好的配置說下本人170體力不錯第一次去徒步多就60升或以上的徒步少就60升以下的全程都坐車就不用背包,旅行箱更方便,真要隨身帶東西,弄個25~40公升的就綽綽有馀西藏旅遊必備品:太陽眼鏡、太陽帽、防曬霜、護膚霜、潤唇膏、長袖上衣、毛衣;對於特殊旅遊或去阿里、藏北、川藏線旅遊,建議帶:睡袋(防寒)、床單(防髒)、羽絨服、旅遊鞋或登山鞋、拖鞋、牙刷、牙膏、毛巾、捲筒紙、紙內褲、消毒濕紙巾、手電筒、防水火柴、刀具、繩子。前運包能裝電腦嗎能裝電腦,有些背包有

DeepSeek'驚人”盈利:理論利潤率高達545%! DeepSeek'驚人”盈利:理論利潤率高達545%! Mar 12, 2025 pm 12:21 PM

DeepSeek公司在知乎發布技術文章,詳細介紹了其DeepSeek-V3/R1推理系統,並首次公開關鍵財務數據,引發業界關注。文章顯示,該系統單日成本利潤率高達545%,創下全球AI大模型盈利新高。 DeepSeek的低成本策略使其在市場競爭中佔據優勢。其模型訓練成本僅為同類產品的1%-5%,V3模型訓練成本僅為557.6萬美元,遠低於競爭對手。同時,R1的API定價僅為OpenAIo3-mini的1/7至1/2。這些數據證明了DeepSeek技術路線的商業可行性,也為AI大模型的高效盈利樹立了

See all articles