跳转到内容

PHP 和 MySQL 编程/数据库连接

来自维基教科书,开放世界中的开放书籍

您只能在文件中存储信息,只能做这么多。当您需要存储大量数据,并在这些数据上执行密集的数字运算时,没有比好的 SQL 数据库更好的了。在本节中,我们将讨论将 PHP 连接到 MySQL 数据库并执行查询以及从数据库中检索数据。

打开与 MySQL 数据库的连接

[编辑 | 编辑源代码]

在我们能够与任何数据库交互之前,我们需要做的第一件事是打开与该数据库服务器的连接。这是通过使用mysql_connect()函数完成的,该函数返回一个数据库处理程序,类似于处理文件时的文件处理程序。然后使用数据库处理程序选择要使用的活动数据库。

以下是建立与数据库服务器的连接以及选择要使用的数据库的代码

 $db = "database1";
 $link = mysql_connect("localhost", "username", "password");
 mysql_select_db($db, $link);

或者

<?php
  $conn = new mysqli("localhost", "root", "mySecretDBpass", "thegeekstuff");
  
  if ($conn->connect_error) {
    die("ERROR: Unable to connect: " . $conn->connect_error);
  } 

  echo 'Connected to the database.<br>';

  $result = $conn->query("SELECT name FROM employee");

  echo "Number of rows: $result->num_rows";

  $result->close();

  $conn->close();

创建查询

[编辑 | 编辑源代码]

建立与数据库的连接后,您必然会想要执行数据库查询。要对所选数据库创建查询,我们使用mysql_query()函数。如果您使用SELECT查询,则从该查询返回的数据将传递给mysql_query()函数,该函数反过来将数据返回给您可以指定的变量。在以下示例中,执行了两个查询,第一个查询不返回任何数据,第二个查询返回数据。

 // A Query without any returned data
 mysql_query ("INSERT INTO `table1` ('val1', 'val2')");
 // A Query with returned data
 $query = mysql_query("SELECT * FROM `table1`");

从 SELECT 查询中检索数据

[编辑 | 编辑源代码]

有许多方法可以从SELECT查询中检索数据。

例如,我们来看以下代码

 # --- Connect To Database ---
 $db = "db1";
 $link = mysql_connect("localhost", "user", "pass");
 mysql_select_db($db, $link);
 
 # --- Select Info from Database ---
 $result = mysql_query ("SELECT val1, val2 FROM tbl1");

要从$result变量中检索数据,我们可以使用许多方法之一。但是,推荐的方法是依次遍历表的每一行,将其存储到一维数组中。我们通过使用mysql_fetch_row()函数来完成此操作,将存储结果的变量传递给该函数。这是一个简单的示例

 while ($row = mysql_fetch_row($result)){
    foreach ($row as $field) {
       print "$field . ";
    }
    print "";
 }

这将简单地以类似表格的格式输出结果。

以下是使用此方法的另一个示例

 $counter = 0;
 while ($row = mysql_fetch_row($result)){
    $val1[$counter] = $row[0];
    $val2[$counter] = $row[1];
    $counter++;
 }
 $numRows = $counter;

上面的示例只是将结果拆分成多个一维数组,以便于操作。

关闭数据库连接

[编辑 | 编辑源代码]

完成操作后,并非总是需要关闭连接,但建议这样做。但是,如果您要打开与另一个数据库的新连接,则必须关闭与数据库的连接。

要关闭与数据库的连接,我们使用mysql_close()函数,如下所示

 mysql_close();

错误处理

[编辑 | 编辑源代码]

这在调试时很有用,即使您只想确保数据库不会出现意外行为。创建查询后,通过mysql_query()函数生成的任何错误消息都将存储在mysql_error()函数中。以下是一个代码片段示例,用于显示错误消息。但是,如果没有错误消息,则会返回一个空字符串。

 print mysql_error();


华夏公益教科书