PHP MySQLi 函数:mysqli_query,mysqli_connect,mysqli_fetch_array

PHP 提供了大量内置函数来操作 MySQL 数据库。

PHP mysqli_connect 函数

PHP mysql connect 函数用于连接到 MySQL 数据库服务器。

它具有以下语法。

<?php;
$db_handle = mysqli_connect($db_server_name, $db_user_name, $db_password);
?>

此处,

  • “$db_handle” 是数据库连接资源变量。
  • “mysqli_connect(…)” 是用于 PHP 数据库连接的函数。
  • “$server_name” 是托管 MySQL 服务器的服务器名称或 IP 地址。
  • “$user_name” 是 MySQL 服务器中的有效用户名。
  • “$password” 是与 MySQL 服务器中的用户名关联的有效密码。

PHP mysqli_select_db 函数

mysqli_select_db 函数用于选择一个数据库。

它具有以下语法。

<?php
mysqli_select_db($db_handle,$database_name);
?>

此处,

  • “mysqli_select_db(…)” 是数据库选择函数,返回 true 或 false。
  • “$database_name” 是数据库的名称。
  • “$link_identifier” 是可选的,用于传递服务器连接链接。

PHP mysqli_query 函数

mysqli_query 函数用于执行 SQL 查询。

该函数可用于执行以下类型的查询;

  • 插入
  • Select
  • 更新
  • 删除

它具有以下语法。

<?php
mysqli_query($db_handle,$query) ;
?>

此处,

  • “mysqli_query(…)” 是执行 SQL 查询的函数。
  • “$query” 是要执行的 SQL 查询。
  • “$link_identifier” 是可选的,可用于传递服务器连接链接。

PHP mysqli_num_rows 函数

mysqli_num_rows 函数用于获取 select 查询返回的行数。

它具有以下语法。

<?php
mysqli_num_rows($result);
?>

此处,

  • “mysqli_num_rows(…)” 是行数函数。
  • “$result” 是 mysqli_query 的结果集。

PHP mysqli_fetch_array 函数

mysqli_fetch_array 函数用于从查询结果集中获取行数组。

它具有以下语法。

<?php
mysqli_fetch_array($result);
?>

此处,

  • “mysqli_fetch_array(…)” 是用于获取行数组的函数。
  • “$result” 是 mysqli_query 函数返回的结果。

PHP mysqli_close 函数

mysqli_close 函数用于关闭打开的数据库连接。

它具有以下语法。

<?php
mysqli_close($db_handle);
?>

此处,

  • “mysqli_close(…)” 是 PHP 函数。
  • “$link_identifier” 是可选的,用于传递服务器连接资源。

让我们来看一些利用这些函数的实际示例。

创建 MySQL 数据库 本教程假设您了解 MySQL 和 SQL,如果您不熟悉这些术语,请参阅我们的 MySQL 和 SQL 教程。

我们将创建一个名为 my_personal_contacts 的简单数据库,其中只有一个表。

以下是创建数据库和表的步骤。

  • 使用您喜欢的访问工具(如 MySQL workbench、phpMyAdmin 等)连接到 MySQL。
  • 创建一个名为 my_person_contacts 的数据库。
  • 执行下面显示的脚本来创建表并插入一些虚拟数据。
<?php
CREATE TABLE IF NOT EXISTS `my_contacts` (

  `id` int(11) NOT NULL AUTO_INCREMENT,

  `full_names` varchar(255) NOT NULL,

  `gender` varchar(6) NOT NULL,

  `contact_no` varchar(75) NOT NULL,

  `email` varchar(255) NOT NULL,

  `city` varchar(255) NOT NULL,

  `country` varchar(255) NOT NULL,

  PRIMARY KEY (`id`)

) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

INSERT INTO `my_contacts` (`id`, `full_names`, `gender`, `contact_no`, `email`, `city`, `country`) VALUES

(1, 'Zeus', 'Male', '111', 'zeus @ olympus . mt . co', 'Agos', 'Greece'),

(2, 'Anthena', 'Female', '123', 'anthena @ olympus . mt . co', 'Athens', 'Greece'),

(3, 'Jupiter', 'Male', '783', 'jupiter @ planet . pt . co', 'Rome', 'Italy'),

(4, 'Venus', 'Female', '987', 'venus @ planet . pt . co', 'Mars', 'Italy');
?>

现在我们已经设置了一个数据库,我们将从 PHP 进行操作。

从数据库读取记录 我们现在将创建一个程序来打印数据库中的记录。

<?php 
	$dbh = mysqli_connect('localhost', 'root', 'melody'); 
	//connect to MySQL server if (!$dbh)     
    
	die("Unable to connect to MySQL: " . mysqli_error());
    
	//if connection failed output error message 
    if (!mysqli_select_db($dbh,'my_personal_contacts'))     
    
	die("Unable to select database: " . mysqli_error()); 
    //if selection fails output error message 
    
	$sql_stmt = "SELECT * FROM my_contacts"; 
    //SQL select query 
    
     $result = mysqli_query($dbh,$sql_stmt);
     //execute SQL statement 
     
	if (!$result)     
		die("Database access failed: " . mysqli_error()); 
    	//output error message if query execution failed 
        
		$rows = mysqli_num_rows($result); 
   		// get number of rows returned 
    
	if ($rows) {     
    
	while ($row = mysqli_fetch_array($result)) {         
		echo 'ID: ' . $row['id'] . '<br>';         
		echo 'Full Names: ' . $row['full_names'] . '<br>';        
		echo 'Gender: ' . $row['gender'] . '<br>';         
		echo 'Contact No: ' . $row['contact_no'] . '<br>';         
		echo 'Email: ' . $row['email'] . '<br>';         
		echo 'City: ' . $row['city'] . '<br>';         
		echo 'Country: ' . $row['country'] . '<br><br>';     
	} 
} 
mysqli_close($dbh); //close the database connection 
?>

执行上述代码将返回如下图所示的结果。

PHP: MySQL Functions

插入新记录

现在让我们看一个向表中添加新记录的示例。下面的代码显示了实现。

<?php 
	$dbh = mysqli_connect('localhost', 'root', 'melody'); 
	//connect to MySQL server if (!$dbh)     
    
	die("Unable to connect to MySQL: " . mysqli_error()); 
	//if connection failed output error message 
    
	if (!mysqli_select_db($dbh,'my_personal_contacts'))     
	die("Unable to select database: " . mysql_error()); 
	//if selection fails output error message 
    
	$sql_stmt = "INSERT INTO `my_contacts` (`full_names`,`gender`,`contact_no`,`email`,`city`,`country`)"; 
	$sql_stmt .= " VALUES('Poseidon','Mail','541',' poseidon @ sea . oc ','Troy','Ithaca')"; 
    
	$result = mysqli_query($dbh,$sql_stmt); //execute SQL statement 
    
	if (!$result)     
		die("Adding record failed: " . mysqli_error()); 
		//output error message if query execution failed echo "Poseidon has been successfully added to your contacts list";
        
 mysqli_close($dbh); //close the database connection 
?>

执行上述代码将输出“Poseidon 已成功添加到您的联系人列表中”。返回到 select 查询示例并再次检索您的联系人。

看看 Poseidon 是否已添加到您的列表中。

更新记录 现在让我们看一个更新数据库中记录的示例。

假设 Poseidon 更改了他的联系电话和电子邮件地址。

<?php 
	$dbh = mysqli_connect('localhost', 'root', 'melody'); 
	//connect to MySQL server 
    
	if (!$dbh)    
	die("Unable to connect to MySQL: " . mysqli_error()); 
    //if connection failed output error message 
    
	if (!mysqli_select_db($dbh,'my_personal_contacts'))     
	die("Unable to select database: " . mysql_error()); 
	//if selection fails output error message 
    
	$sql_stmt = "UPDATE `my_contacts` SET `contact_no` = '785',`email` = ' poseidon @ ocean . oc ';
	//SQL select query $sql_stmt .= " WHERE `id` = 5"; 
    
	$result = mysqli_query($dbh,$sql_stmt); 
	//execute SQL statement if (!$result)     
    
	die("Deleting record failed: " . mysqli_error()); 
	//output error message if query execution failed 
    
	echo "ID number 5 has been successfully updated"; 
mysqli_close($dbh); //close the database connection 
?>

删除记录

现在让我们看一个从数据库中删除记录的示例。假设维纳斯对我们有禁令,我们必须将她的联系信息从我们的数据库中删除。

<?php 
	$dbh = mysqli_connect('localhost', 'root', 'melody'); 
	//connect to MySQL server
    
	if (!$dbh)     
	die("Unable to connect to MySQL: " . mysqli_error()); 
	//if connection failed output error message 
    
	if (!mysqli_select_db($dbh,'my_personal_contacts'))     
	die("Unable to select database: " . mysqli_error()); 
	//if selection failes output error message $id = 4; 
	//Venus's ID in the database 
    
	$sql_stmt = "DELETE FROM `my_contacts` WHERE `id` = $id"; 
	//SQL Delete query 
    
	$result = mysqli_query($dbh,$sql_stmt); 
	//execute SQL statement 
    
	if (!$result)     
	die("Deleting record failed: " . mysqli_error());
	//output error message if query execution failed 
    
	echo "ID number $id has been successfully deleted"; 
mysqli_close($dbh); //close the database connection 
?>

PHP 数据访问对象 PDO

PDO 是一个类,它允许我们操作不同的数据库引擎,如 MySQL、PostGres、MS SQL Server 等。

下面的代码显示了使用 PDO 对象进行的数据库访问方法。

注意:下面的代码假定您了解 SQL 语言、数组、异常处理和 foreach 循环。

<?php 
	try {    
	$pdo = new PDO("mysql:host=localhost;dbname=my_personal_contacts", 'root', 'melody');     
    
	$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);     
	$pdo->exec('SET NAMES "utf8"');     
    
	$sql_stmt = "SELECT * FROM `my_contacts`";     
	$result = $pdo->query($sql_stmt);     
	$result->setFetchMode(PDO::FETCH_ASSOC);     
	$data = array();     
	foreach ($result as $row) {         
	$data[] = $row;     
  }     
print_r($data); 
} 
catch (PDOException $e) {     
	echo $e->getMessage(); 
} 
?>

此处,

  • “try{…catch…}” 是异常处理块。
  • “$pdo = new PDO(“mysql…” 创建 PDO 对象实例,并传入数据库驱动程序、服务器和数据库名称、用户 ID 和密码。
  • “$pdo->setAtt…” 设置 PDO 错误模式和异常模式属性。
  • “$pdo->exec(‘SET NA…” 设置编码格式。

ODBC ODBC 是 Open Database Connectivity 的首字母缩写。它具有以下基本语法。

<?php $conn = odbc_connect($dsn, $user_name, $password); ?>

此处,

  • “odbc_connect” 是 PHP 内置函数。
  • “$dsn” 是 ODBC 数据源名称。
  • “$user_name” 是可选的,用于 ODBC 用户名。
  • “$password” 是可选的,用于 ODBC 密码。

示例假定您:

  • 正在使用 Windows 操作系统。
  • 您已创建一个 ODBC 链接到名为 northwind 的 northwind Microsoft Access 数据库。

以下是 ODBC 数据访问的实现代码。

<?php 
	$dbh = odbc_connect('northwind', '', ''); 
	if (!$dbh) {     
	exit("Connection Failed: " . $dbh); 
} 
	$sql_stmt = "SELECT * FROM customers"; 
	$result = odbc_exec($dbh, $sql_stmt); 
	if (!$result) {     
	exit("Error access records"); 
} 
	while (odbc_fetch_row($result)) {     
	$company_name = odbc_result($result, "CompanyName");    
	$contact_name = odbc_result($result, "ContactName");     
	echo "<b>Company Name (Contact Person):</b> $company_name ($contact_name) <br>";
} 
odbc_close($dbh); 
?>

摘要

  • MySQL 是一种开源关系数据库管理系统,可在大多数 Web 托管服务器上使用。
  • PHP 提供了大量内置函数,可以简化与 MySQL 的交互。
  • PDO 是 PHP Data Object 的首字母缩写;它用于使用相同的对象连接到不同的数据库引擎。
  • PHP 使用 odbc_connect 函数通过 ODBC 操作数据库。