多数大学生出来选择的工作和专业无关
首页 > 专业知识

PHP+MySQL数据库函数简介

时间:2017-05-18 15:44:48 [来源]:郑州PHP培训学校

   PHP+MySQL数据库函数简介

  在我们安装和设置了我们的MySQL数据库以后,我们就可以开始编写PHP脚本来与他进行交互了。在这里我们将会试着解释网站也数据交互的所有基本函数。
  MySQL4.1系列的开发版本引入了一些新的特征,这些新的特征需要重写PHP中已经存在的MySQL的支持函数。这些新的PHP扩展被称之为改进的
  MySQL。这必须在安装PHP时使用--with-mysqli选项构建入PHP中,他所提供的函数是以mysqli_为前缀的,而不是旧版本的以
  mysql_为前缀。MySQL4.1系列和与搭配的新的PHP扩展之前一些差距,所以我们只是关注于现在的支持,这将会覆盖的以现有的
  MySQL/PHP安装。
  连接MySQL
  初始化MySQL连接的基本命令如下:
  如果我们使用变量则为
  mysql_connect($hostname,$user,$password);
  如果我们使用字符串则为
  mysql_connect('localhost','root','sesame');
  在这里密码是可选的,这取决于我们所使用的数据库。如果不需要密码,则那个变量留空。我们也可以为我们的服务器指定一个端口和套接吕($hostname:port:socket),除非我们特殊的选择了一个非标准的端口与套接口,否则我们并不需要这样做。
  相应的mysqli函数为mysqli_connect,这个函数可以允许我们指定第四个参数,从而我们可以在我们用来连接的函数中指定我们选择的数据
  库。函数mysqli_select_db是存在的,但是我们只是希望在同一个连接中使用多个数据库时才会使用这个函数。
  在同一个脚本中,我们在每一次查询数据库时并不需要每一次都要建立一个新的数据库连接。然而对于每一个与数据库交互的脚本,我们需要再一次运行这个函数。
  下面,我们需要来选择要使用的数据:
  如果我们使用变量,其格式如下
  mysql_select_db($database);
  如果我们使用字符串,其格式如下
  mysql_select_db('phpbook');
  我们必需要在每一次我们建立一个连接时选择一个数据库,这也就是至少是在每一个页面或是每一次我们更改数据后都会这样做。否则,我们就会得到一个没有选择
  数据库的错误。即使我们对于每一个后台程序只创建了一个数据库,我们也必须这样做,因为MySQL默认创建了名为mysql和test的数据库,而这也许
  正是我们所没有考虑的。
  我们也许会发现将我们所有的连接信息放在一个自定义的连接函数中,而将这个连接函数放在我们所有的脚本都可以访问到的地方是一件很方便的事情,例如PHP的包含目录,或者是一个虚拟服务器。这个函数看起来也许是类似于下面的样子:
  // Connect to a single db
  function qdbconn()
  {
  $dbUser = "myusr";
  $dbPass = "mypassword";
  $dbName = "mydatebase";
  $dbHost = "myhost";
  if(!($link=mysql_connect($dbHost,$dbUser,$dbPass)))
  {
  error_log(mysql_error(),3,"/tmp/phplog.err");
  }
  if(!mysql_select_db($dbName,$link))
  {
  error_log(mysql_error(),3,"/tmp/phplog.err");
  }
  }
  如果我们愿意,我们可以通过在同一个服务器上创建到多个数据库的连接来扩展这个函数。这段代码同时也会在PHP错误日志中记录MySQL的错误信息。
  现在我们已经创建了一个指向一个特定数据库的连接了,这样我们就准备好进了数据库的查询了。
  查行MySQL查询
  由PHP进行的数据库查询是包将在一个名为mysql_query()的微小的PHP函数中的基本MySQL命令。这也是我们使用SELECT,
  INSERT,UPDATE,DELETE等SQL命令的地方。MySQL命令如创建(CREATE)或是删除(DROP)一个表的命令也可以由PHP函
  数来实现,如果我们不想使用MySQL客户端进行这些操作时,我们可以选择这样来做。
  我们可以用下面最简单的方式编写一个查询语句:
  msyql_query("SELECT Surname FROM personal_info WHERE ID20030702";
  $result = mysql_query($query,$link_2);
  正如我们所想到的那样,改进的MySQL函数为mysqli_query().他与前面我们所介绍的函数相类似,所不同的只是query和link改变了位置而且可以有第三个参数允许我们指定一个结果标记来指明PHP如何处理结果。
  如查我们的查询是INSERT,UPDATE,DELETE,CREATE TABLE,DROP
  TABLE并且返回TRUE,我们可以使用mysql_affected_rows来查看有多少行因为这个查询而改变了。这个函数可以选择带一个连接标
  识,除非我们要使用多个连接时可以这样做。他并不会将结果作为参数。我们可以像下面的样子来调用这个函数,而没有指定结果处理:
  $affected_rows = mysql_affected_rows();
  如果我们的查询是一个SELECT语句,我们可以使用 mysql_num_rows($result)来查看通过一个成功的SELECT返回了多少行。
  mysqli_affected_rows与mysqli_num_rows与mysql_的函数相类似。
  取出数据集
  经常困扰PHP新手一个问题就是从PHP中取出数据的概念。我们常常会逻辑的认为查询的结果就是我们需要的数据,但是事实这是不正确的。正如我们在前面所
  讨论的那样,PHP查询的结果是一个代表成功或是失败的整数或是查询的标识符。实际上发生的事情是这样的:mysql_query()命令将数据从数据中
  取出然后向PHP发送信息来报告执行的状态。此时,所取出的数据存在于一个MySQL或是PHP都不可以访问的地方。数据就在那里,但是却在等待配置的命
  令。他需要mysql_fetch函数来使得这些数据可以为PHP所用。
  这些取数函数如下:
  mysql_fetch_row:将行作为列举数组返回
  mysql_fetch_object:将行作为对象返回
  mysql_fetch_array:将行作为关联数组返回
  mysql_result:返回数据的一个元素
  这三个取数函数之间的区别是很微小的。最一般的就是mysql_fetch_row,其用法如下:
  $query = "SELECT ID,LastName,FirstName FROM users WHERE Status = 1";
  $result = mysql_query($query);
  while($name_row = mysql_fetch_row($result))
  {
  print("$name_row[0] $name_row[1] $name_row[2]
  \n");
  }
  这段代码将会从数据库中输出指定的行,每一行包含一行或是与唯一的ID相关的信息。
  函数mysql_fetch_object执行同样的任务,所不同的是数据是作为一个对象而不是一个数组返回的。很明显这对于面向对象编程是很有帮助的。
  其用法如下:
  $query = "SELECT ID,LastName,FirstName FROM users WHERE Status = 1";
  $result = mysql_query($query);
  while($row = mysql_fetch_object($result))
  {
  echo "$row->ID,$row->LastName,$row->FirstName
  \n";
  }
  最常用的取数据函数为mysql_fetch_array,这个函数会提供将结果作为关联数组或是列举数,或是同时,默认为同时。这就意味着我们可以通过数据域的名字而不是数字来访问输出的数据。
  $query = "SELECT ID,LastName,FirstName FROM users WHERE Status = 1";
  $result = mysql_query($query);
  while($row = mysql_fetch_array($result))
  {
  echo "$row['ID'],$row['LastName'],$row['FirstName']
  \n";
  }
  在这里我们要知道就是mysql_fetch_array可以以与mysql_fetch_row完全相同的方法来进行使用,这时所使用的是数字索引而不
  是区域名称。通过使用这个函数,我们可以用这样的选择。如果我们想指明偏移或是区域名称而不是两者,那么我们可以用下面的方法来做到:
  $offset_row = mysql_fetch_array($result,MYSQL_NUM);
  或是
  $associative_row = mysql_fetch_array($result,MYSQL_ASSOC);
  我们也可以使用MYSQL_BOTH来作来第二个参数值,而这也正是默认的情况。
  在PHP的早期版本
  ,mysql_fetch_row曾被认为要比mysql_fetch_object与mysql_fetch_object快得多,但是到现在这已不再
  是一个问题,因为他们之间的不同已经是相当的微小了。而现在的PHP小组推荐使用mysql_fetch_array。
  最后一个也是最少一个使用到的取数函数为mysql_result(),只有当我们要从数据库中取出一个数据时的情况下才会考虑这个函数。如下面的一个例子:
  $query = "SELECT count(*) FROM personal_info";
  $db_result = mysql_query($query);
  $datapoint = mysql_result($db_result,0,0);
  mysql_result函数需要三个参数,结果标识,行标识,以及可选的区域。区域名称的值可以是上面的偏移,或是关联数组中的名字("Surname"),或是MySQL中的用数据表表示的名字("personal_info.Surname").
  如果可能尽量使用偏移,因为这要比另外的两个快一些。更好的就是不要经常的使用这个函数。一个良好的格式化查询可以更为高效的返回查询的结果。
  所有的PHP取出数据集的函数与mysqi相应的函数相同,他们传递同样的参数并返回结果。
  还有一个特殊的MySQL函数可以用来与这些取数函数中的任何一个来搭配使用从而更为明确的指明所要求的行号。这个函数为
  mysql_data_seek,这个函数需要一个结果标识符与一个行号作为参数,然后移动内部的行指针到指定的行数据集上。这个函数最常用的用法是通过
  将行号重新置为零在结果集中循环,这与数组的重置相类似。这样就避免了到数据而进行昂贵的数据库调用。下面是一个使用mysql_data_seek例
  子:
  \ntitle\n");
  $query = "SELECT title,publisher FROM books";
  $result = mysql_query($query);
  while($book_row = mysql_fetch_array($result))
  {
  echo ("$book_row[0]\n");
  }
  echo ("
  \n");
  echo ("\nPublishers\n");
  mysql_data_seek($result,0);
  while($book_row = mysql_fetch_array($result))
  {
  echo ("$book_row[1]\n");
  }
  echo ("
  \n");
  ?>
  如果没有mysql_data_seek函数,结果集的第二次使用就不会返回第0行,因为现在已经到了结果集的最末,如果我们不有显式的移动数据指针就会停在那里。这个函数对于我们格式化数据是相当有用的。
  得到数据的数据

上一篇:使PHP初学者头疼的问题总结

下一篇:PHP编程命名规则有哪些