PHP 使用MYSQLI擴充套件運算元據庫

2021-07-31 16:36:21 字數 3489 閱讀 5796

mysqli 連線相關的

mysqli_result 處理結果集

mysqli_stmt 預處理類

<?php

$db_host = 'localhost';

$db_name = 'test';

$db_user = 'root';

$db_pwd = '';

//物件導向方式

$mysqli = new mysqli($db_host, $db_user, $db_pwd, $db_name);

//物件導向的昂視遮蔽了連線產生的錯誤,需要通過函式來判斷

if(mysqli_connect_error())

//設定編碼

$mysqli->set_charset("utf8");//或者 $mysqli->query("set names 'utf8'")

//關閉連線

$mysqli->close();

//面向過程方式的連線方式

$mysqli = mysqli_connect($db_host, $db_user, $db_pwd, $db_name);

//判斷是否連線成功

if(!$mysqli )

//關閉連線

mysqli_close($mysqli);

?>

通用:執行sql語句都可用query(sql),執行失敗會返回false,select成功則返回結果集物件,其他返回true,只要不是false就說明sql語句執行成功了。

<?php

//無結果集示例

$sql = "insert into table_name (`name`, `address`) values ('xiaoming', 'adddddrrreess')";

$result = $mysqli->query($sql);

//或者

$sql = "delete from table_name where name='xiaoming'";

$result = $mysqli->query($sql);

if($result === false)

//影響條數

echo $mysqli->num_rows;

//插入的id

echo $mysqli->insert_id;

$mysqli->close();

有結果集

<?php

$sql = "select * from table_name";

$result = $mysqli->query($sql);

if($result === false)

//行數

echo $result->num_rows;

//列數 字段數

echo $result->field_count;

//獲取字段資訊

$field_info_arr = $result->fetch_fields();

//移動記錄指標

//$result->data_seek(1);//0 為重置指標到起始

//獲取資料

while($row = $result->fetch_assoc())

//也可一次性獲取所有資料

//$result->data_seek(0);//如果前面有移動指標則需重置

$data = $result->fetch_all(mysqli_assoc);

$mysqli->close();

預處理能有效的防止sql注入的產生,mysqli_stmt是預處理類

<?php

$sql = "insert inro table_name ('name','address') values (?,?)";

//獲得預處理物件

$stmt = $mysqli->prepare($sql);

//繫結引數 第乙個引數為繫結的資料型別

/*i:integer 整型

d:double 浮點型

s:string 字串

b:a blob packets blob資料報

*/$name = "xiaoming";

$address = "adddressss";

$stmt->bind_param("ss", $name, $address);//繫結時使用變數繫結

//執行預處理

$stmt->execute();

/*//可重新繫結 多次執行

$stmt->bind_param("ss", $name, $address);

$stmt->execute();

*///插入的id 多次插入為最後id

echo $stmt->insert_id;

//影響行數 也是最後一次執行的

echo $stmt->affected_rows;

//錯誤號

echo $stmt->errno;

//錯誤資訊

echo $stmt->error;

//關閉

$stmt->close();

$mysqli->close();

下面示例select的預處理

//注釋部分省略

$sql = "select * from table_name where id<?";

$stmt = $mysqli->prepare($sql);

$id = 30;

$stmt->bind_param("i", $id);

$stmt->execute();

//獲取結果集

$result = $stmt->get_result();//結果集取後的操作就和之前一樣了

//獲取所有資料

$data = $result->fetch_all(mysqli_assoc);

$result->close();

$mysqli->close();

一次執行多條sql語句multiquery(不推薦),執行結果不是結果集,affectd_rows是最後影響的條數

<?php

$sql_arr = array(

"insert into table_name (`name`,`address`) values ('xiaoming','a')",

"insert into table_name (`name`,`address`) values ('xiaohong','a')",

'delete from table_name where id=23',

);$sql = implode(';', $sql_arr);

$result = $mysqli->multi_query($sql);

if($result === false)

$mysqli->close();

php增加mysqli擴充套件

tar zxf php 5.2.10.tar.gz cd php 5.2.10 ext m ysqli usr local php bin phpize 生成configur檔案 configure with php config usr local php bin php config with ...

PHP開啟mysqli擴充套件

這個問題困擾了我很久,call to undefined function mysqli connect 解決這個問題需要開啟mysqli擴充套件 開啟mysqli擴充套件需要這兩個步驟缺一不可 1.在php.ini中搜尋php mysqli.dll 2.設定extension dir指令 note...

PHP的MySQLi擴充套件

什麼是php的mysqli擴充套件?php的mysqli擴充套件又稱為mysql增強擴充套件,mysqli擴充套件在php5及以後版本中包含。mysqli擴充套件相對於mysql擴充套件的優勢 基於面向過程和物件導向的使用 支援預處理語句 支援事務 mysqli擴充套件安裝 配置php配置檔案,開啟...