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

在PHP中操作MySQL要注意哪些问题?

时间:2018-05-14 20:25:53 [来源]:郑州PHP培训学校

   在PHP中操作MySQL要注意哪些问题?

  1、分号的例外
  在MySQL中,每一行命令都是用分号(;)作为结束的,但是当一行MySQL命令被插入在PHP代码中时,最好把后面的分号省略掉,例如:
  mysql_query ("INSERT INTO tablename (first_name, last_name) VALUES ('$first_name', '$last_name')");这是因为PHP也是以分号作为一行的结束的,额外的分号有时会导致PHP 的语法分析器做出错误的分析,所以还是省略掉的好。在这种情况下,虽然省略了分号,但是 PHP 在执行 MySQL 命令时会自动加上分号。
  另外还有一个不要加分号的情况。当你想把要字段的竖着排列显示下来,而不是像通常的那样横着排列时,你可以用 \G 来结束一行 SQL 语句,这时就用不上分号了,例如:
  SELECT * FROM PENPALS WHERE USER_ID = 1\G2、TEXT、DATE、和 SET 数据类型
  TEXT 不是一种数据类型,应该是" LONG VARCHAR "或者" MEDIUMTEXT "。
  DATE 数据类型的格式是 YYYY-MM-DD ,比如: 2001-10-01 。你可以很容易的用 date 函数来得到这种格式的当前系统时间:
  date("Y-m-d")
  并且,在 DATA 数据类型之间可以作减法,得到相差的时间天数:
  $age = ($current_date - $birthdate);
  集合 SET 是一个有用的数据类型,它和枚举 ENUM 有点相似,只不过是 SET 能够保存多个值而 ENUM 只能保存一个值而已。而且, SET 类型最多只能够有 64 个预定的值,而 ENUM 类型却能够处理最多 65,535 个预定义的值。而如果需要有大于 64 个值的集合,该怎么办呢?这时就需要定义多个集合来一起解决这个问题了。
  3、通配符
  SQL 的通配符有两种:" * "和" % "。分别用在不同的情况下。例如:如果你想看到数据库的所有内容,可以像这样来查询:
  SELECT * FROM dbname WHERE USER_ID LIKE '%';怎样将MySQL数据库结构和数据导出或导入
  在使用MySQL时,有时需要从数据库中导出数据,以便用在本地或其它的数据库系统之上,或者将现有数据导入MySQL数据库中。下面我们就来分析一下如何做MySQL数据库的结构和数据的导出和导入。
  导出要用到MySQL的mysqldump工具,基本用法是:
  shell> mysqldump [OPTIONS] database [tables]
  如果不给定任何表,整个数据库将被导出。
  如果想看到mysqldump的版本支持的各个选项及含义,可以执行这条命令:
  shell> mysqldump --help
  下面来谈谈mysqldump支持的主要选项及含义:
  --add-locks :在每个表导出之前增加LOCK TABLES并且之后UNLOCK TABLE。
  --add-drop-table :在每个create语句之前增加一个drop table。
  --allow-keywords :允许创建是关键词的列名字。这由表名前缀于每个列名做到。
  -c, --complete-insert :使用完整的insert语句(用列名字)。
  -C, --compress :如果客户和服务器均支持压缩,压缩两者间所有的信息。
  --delayed :用INSERT DELAYED命令插入行。
  -e, --extended-insert :使用全新多行INSERT语法。(给出更紧缩并且更快的插入语句)-#, --debug[=option_string] :跟踪程序的使用(为了调试)。
  --fields-terminated-by=...
  --fields-enclosed-by=...
  --fields-optionally-enclosed-by=...
  --fields-escaped-by=...
  --fields-terminated-by=...
  这些选择与-T选择一起使用,并且有相应的LOAD DATA INFILE子句相同的含义LOAD DATA INFILE语法:
  -F, --flush-logs :在开始导出前,洗掉在MySQL服务器中的日志文件。
  -f, --force :即使我们在一个表导出期间得到一个SQL错误,继续。
  -h, --host=.. :从命名的主机上的MySQL服务器导出数据。缺省主机是localhost。
  -l, --lock-tables :为开始导出锁定所有表。
  -t, --no-create-info :不写入表创建信息(CREATE TABLE语句)没有mysql支持时的替代方案
  ∫话愀鋈嗣夥阎饕晨占涠疾换崽峁﹎ysql支持,就是提供也很苛刻,所以寻找也个良好的替代方案很重要哦!
  PHP的文件处理功能很强大,所以可以用文件的存取来代替来!(要知道没有数据库的时候,什么都是用文件组织的哦!呵呵!),其中个数据项用特殊符号分割,我采用的是“||”,方便通过explode()函数读取单个记录!
  其实这里数据库的思想还是可以用到的!象数据库的索引!所以必须先做个索引文件!(这样说也并不正确)就以留言本来说吧:
  主要文件是:index.database
  其结构如下:
  留言人姓名||留言人性别||留言时间||留言内容存放位置||feiyn(这项是方便读取时的被‘n’干恼的!
  每条存储一行可以方便的通过PHP的fgets()函数读取,或者file()函数读取每行到数组为了防止多人同是对数据的写入冲突,故还需要加锁(也用文件实现)以下是写入代码:
  $#@60;?php
  //必须传入以下参量:
  //留言人姓名 $name
  //留言人性别 $sex
  //留言时间 $time
  //留言内容存放位置 $savePosite
  $indexFile="index.database";
 

上一篇:PHP中date时差问题解决方法

下一篇:用PHP实现表单验证码登陆校验