缘起

在学习 PHP 与 SQL 应用课程的最后都会练习怎么样透过 PHP 在 HTML 执行 SQL 的 insert、 delete、update、search 的工作。常常是一个项目就要重写一组这个样子的程式。这样才能让使用者在前端调整自己输入的資料结果时,避免使用者透过 phpAdmin 去影响 SQL的資料。
我自己在同时进行两个项目时,就需要同时做两个不同 Database 的呈现方法,浪费时间。之让我寻思一个架构可以通用到所有资料表、资料库,于是就有这篇笔记的研究。

几个关键技巧

1. 在完全不知道这个 MySQL 资料库的情形下,找到有哪些资料库和 table 名称:
在MySQL 里面有一组 “show" 的语法如下:

1. show tables或show tables from database_name; -- 显示当前数据库中所有表的名称。 
2. show databases; -- 显示mysql中所有数据库的名称。 
3. show columns from table_name from database_name; 或show columns from database_name.table_name; -- 显示表中列名称。 
4. show grants for user_name; -- 显示一个用户的权限,显示结果类似于grant 命令。 
5. show index from table_name; -- 显示表的索引。 
6. show status; -- 显示一些系统特定资源的信息,例如,正在运行的线程数量。 
7. show variables; -- 显示系统变量的名称和值。 
8. show processlist; -- 显示系统中正在运行的所有进程,也就是当前正在执行的查询。大多数用户可以查看他们自己的进程,但是如果他们拥有process权限,就可以查看所有人的进程,包括密码。 
9. show table status; -- 显示当前使用或者指定的database中的每个表的信息。信息包括表类型和表的最新更新时间。 
10. show privileges; -- 显示服务器所支持的不同权限。 
11. show create database database_name; -- 显示create database 语句是否能够创建指定的数据库。 
12. show create table table_name; -- 显示create database 语句是否能够创建指定的数据库。 
13. show engines; -- 显示安装以后可用的存储引擎和默认引擎。 
14. show innodb status; -- 显示innoDB存储引擎的状态。 
15. show logs; -- 显示BDB存储引擎的日志。 
16. show warnings; -- 显示最后一个执行的语句所产生的错误、警告和通知。 
17. show errors; -- 只显示最后一个执行语句所产生的错误。 
18. show [storage] engines; --显示安装后的可用存储引擎和默认引擎。

我使用了前三个 show 的表现

1. show tables或show tables from database_name; -- 显示当前数据库中所有表的名称。 
2. show databases; -- 显示mysql中所有数据库的名称。 
3. show columns from table_name from database_name; 或show columns from database_name.table_name; -- 显示表中列名称。

2. PHP 里面运作MySQL的几个函数 --MySQLi 函数

mysqli_affected_rows()	返回前一次 MySQL 操作所影响的记录行数。
mysqli_autocommit()	打开或关闭自动提交数据库修改。
mysqli_change_user()	更改指定数据库连接的用户。
mysqli_character_set_name()	返回数据库连接的默认字符集。
mysqli_close()	关闭先前打开的数据库连接。
mysqli_commit()	提交当前事务。
mysqli_connect_errno()	返回上一次连接错误的错误代码。
mysqli_connect_error()	返回上一次连接错误的错误描述。
mysqli_connect()	打开一个到 MySQL 服务器的新的连接。
mysqli_data_seek()	调整结果指针到结果集中的一个任意行。
mysqli_debug()	执行调试操作。
mysqli_dump_debug_info()	转储调试信息到日志中。
mysqli_errno()	返回最近调用函数的最后一个错误代码。
mysqli_error_list()	返回最近调用函数的错误列表。
mysqli_error()	返回最近调用函数的最后一个错误描述。
mysqli_fetch_all()	从结果集中取得所有行作为关联数组,或数字数组,或二者兼有。
mysqli_fetch_array()	从结果集中取得一行作为关联数组,或数字数组,或二者兼有。
mysqli_fetch_assoc()	从结果集中取得一行作为关联数组。
mysqli_fetch_field_direct()	从结果集中取得某个单一字段的 meta-data,并作为对象返回。
mysqli_fetch_field()	从结果集中取得下一字段,并作为对象返回。
mysqli_fetch_fields()	返回结果中代表字段的对象的数组。
mysqli_fetch_lengths()	返回结果集中当前行的每个列的长度。
mysqli_fetch_object()	从结果集中取得当前行,并作为对象返回。
mysqli_fetch_row()	从结果集中取得一行,并作为枚举数组返回。
mysqli_field_count()	返回最近查询的列数。
mysqli_field_seek()	把结果集中的指针设置为指定字段的偏移量。
mysqli_field_tell()	返回结果集中的指针的位置。
mysqli_free_result()	释放结果内存。
mysqli_get_charset()	返回字符集对象。
mysqli_get_client_info()	返回 MySQL 客户端库版本。
mysqli_get_client_stats()	返回有关客户端每个进程的统计。
mysqli_get_client_version()	将 MySQL 客户端库版本作为整数返回。
mysqli_get_connection_stats()	返回有关客户端连接的统计。
mysqli_get_host_info()	返回 MySQL 服务器主机名和连接类型。
mysqli_get_proto_info()	返回 MySQL 协议版本。
mysqli_get_server_info()	返回 MySQL 服务器版本。
mysqli_get_server_version()	将 MySQL 服务器版本作为整数返回。
mysqli_info()	返回有关最近执行查询的信息。
mysqli_init()	初始化 MySQLi 并返回 mysqli_real_connect() 使用的资源。
mysqli_insert_id()	返回最后一个查询中自动生成的 ID。
mysql_kill()	请求服务器杀死一个 MySQL 线程。
mysqli_more_results()	检查一个多查询是否有更多的结果。
mysqli_multi_query()	执行一个或多个针对数据库的查询。
mysqli_next_result()	为 mysqli_multi_query() 准备下一个结果集。
mysqli_num_fields()	返回结果集中字段的数量。
mysqli_num_rows()	返回结果集中行的数量。
mysqli_options()	设置额外的连接选项,用于影响连接行为。
mysqli_ping()	进行一个服务器连接,如果连接已断开则尝试重新连接。
mysqli_prepare()	准备执行一个 SQL 语句。
mysqli_query()	执行某个针对数据库的查询。
mysqli_real_connect()	打开一个到 MySQL 服务器的新的链接。
mysqli_real_escape_string()	转义在 SQL 语句中使用的字符串中的特殊字符。
mysqli_real_query()	执行 SQL 查询
mysqli_reap_async_query()	返回异步查询的结果。
mysqli_refresh()	刷新表或缓存,或者重置复制服务器信息。
mysqli_rollback()	回滚数据库中的当前事务。
mysqli_select_db()	更改连接的默认数据库。
mysqli_set_charset()	设置默认客户端字符集。
mysqli_set_local_infile_default()	撤销用于 load local infile 命令的用户自定义句柄。
mysqli_set_local_infile_handler()	设置用于 LOAD DATA LOCAL INFILE 命令的回滚函数。
mysqli_sqlstate()	返回最后一个 MySQL 操作的 SQLSTATE 错误代码。
mysqli_ssl_set()	用于创建 SSL 安全连接。
mysqli_stat()	返回当前系统状态。
mysqli_stmt_init()	初始化声明并返回 mysqli_stmt_prepare() 使用的对象。
mysqli_store_result()	返回的当前的结果集。
mysqli_thread_id()	返回当前连接的线程 ID。
mysqli_thread_safe()	返回是否将客户端库编译成 thread-safe。
mysqli_use_result()	从上次使用 mysqli_real_query() 执行的查询中初始化结果集的检索。
mysqli_warning_count()	返回连接中的最后一个查询的警告数量。

3.jQuery 底下的 AJAX 应用

$.ajax()	执行异步 AJAX 请求
$.ajaxPrefilter()	在每个请求发送之前且被 $.ajax() 处理之前,处理自定义 Ajax 选项或修改已存在选项
$.ajaxSetup()	为将来的 AJAX 请求设置默认值
$.ajaxTransport()	创建处理 Ajax 数据实际传送的对象
$.get()	使用 AJAX 的 HTTP GET 请求从服务器加载数据
$.getJSON()	使用 HTTP GET 请求从服务器加载 JSON 编码的数据
$.getScript()	使用 AJAX 的 HTTP GET 请求从服务器加载并执行 JavaScript
$.param()	创建数组或对象的序列化表示形式(可用于 AJAX 请求的 URL 查询字符串)
$.post()	使用 AJAX 的 HTTP POST 请求从服务器加载数据
ajaxComplete()	规定 AJAX 请求完成时运行的函数
ajaxError()	规定 AJAX 请求失败时运行的函数
ajaxSend()	规定 AJAX 请求发送之前运行的函数
ajaxStart()	规定第一个 AJAX 请求开始时运行的函数
ajaxStop()	规定所有的 AJAX 请求完成时运行的函数
ajaxSuccess()	规定 AJAX 请求成功完成时运行的函数
load()	从服务器加载数据,并把返回的数据放置到指定的元素中
serialize()	编码表单元素集为字符串以便提交
serializeArray()	编码表单元素集为 names 和 values 的数组

其中用的最多的是

$(selector).post(URL,data,function(data,status,xhr),dataType)
$.get(URL,data,function(data,status,xhr),dataType)

4. jQuery 的事件应用

bind()	向元素添加事件处理程序
blur()	添加/触发失去焦点事件
change()	添加/触发 change 事件
click()	添加/触发 click 事件
dblclick()	添加/触发 double click 事件
delegate()	向匹配元素的当前或未来的子元素添加处理程序
die()	在版本 1.9 中被移除。移除所有通过 live() 方法添加的事件处理程序
error()	在版本 1.8 中被废弃。添加/触发 error 事件
event.currentTarget	在事件冒泡阶段内的当前 DOM 元素
event.data	包含当前执行的处理程序被绑定时传递到事件方法的可选数据
event.delegateTarget	返回当前调用的 jQuery 事件处理程序所添加的元素
event.isDefaultPrevented()	返回指定的 event 对象上是否调用了 event.preventDefault()
event.isImmediatePropagationStopped()	返回指定的 event 对象上是否调用了 event.stopImmediatePropagation()
event.isPropagationStopped()	返回指定的 event 对象上是否调用了 event.stopPropagation()
event.namespace	返回当事件被触发时指定的命名空间
event.pageX	返回相对于文档左边缘的鼠标位置
event.pageY	返回相对于文档上边缘的鼠标位置
event.preventDefault()	阻止事件的默认行为
event.relatedTarget	返回当鼠标移动时哪个元素进入或退出
event.result	包含由被指定事件触发的事件处理程序返回的最后一个值
event.stopImmediatePropagation()	阻止其他事件处理程序被调用
event.stopPropagation()	阻止事件向上冒泡到 DOM 树,阻止任何父处理程序被事件通知
event.target	返回哪个 DOM 元素触发事件
event.timeStamp	返回从 1970 年 1 月 1 日到事件被触发时的毫秒数
event.type	返回哪种事件类型被触发
event.which	返回指定事件上哪个键盘键或鼠标按钮被按下
event.metaKey	事件触发时 META 键是否被按下
focus()	添加/触发 focus 事件
focusin()	添加事件处理程序到 focusin 事件
focusout()	添加事件处理程序到 focusout 事件
hover()	添加两个事件处理程序到 hover 事件
keydown()	添加/触发 keydown 事件
keypress()	添加/触发 keypress 事件
keyup()	添加/触发 keyup 事件
live()	在版本 1.9 中被移除。添加一个或多个事件处理程序到当前或未来的被选元素
load()	在版本 1.8 中被废弃。添加一个事件处理程序到 load 事件
mousedown()	添加/触发 mousedown 事件
mouseenter()	添加/触发 mouseenter 事件
mouseleave()	添加/触发 mouseleave 事件
mousemove()	添加/触发 mousemove 事件
mouseout()	添加/触发 mouseout 事件
mouseover()	添加/触发 mouseover 事件
mouseup()	添加/触发 mouseup 事件
off()	移除通过 on() 方法添加的事件处理程序
on()	向元素添加事件处理程序
one()	向被选元素添加一个或多个事件处理程序。该处理程序只能被每个元素触发一次
$.proxy()	接受一个已有的函数,并返回一个带特定上下文的新的函数
ready()	规定当 DOM 完全加载时要执行的函数
resize()	添加/触发 resize 事件
scroll()	添加/触发 scroll 事件
select()	添加/触发 select 事件
submit()	添加/触发 submit 事件
toggle()	在版本 1.9 中被移除。添加 click 事件之间要切换的两个或多个函数
trigger()	触发绑定到被选元素的所有事件
triggerHandler()	触发绑定到被选元素的指定事件上的所有函数
unbind()	从被选元素上移除添加的事件处理程序
undelegate()	从现在或未来的被选元素上移除事件处理程序
unload()	在版本 1.8 中被废弃。添加事件处理程序到 unload 事件
contextmenu()	添加事件处理程序到 contextmenu 事件
$.holdReady()	用于暂停或恢复.ready() 事件的执行

5. HTML 的 表单技巧

<form>
.
input 元素
.
</form>

其中 type = submit 的应用,和 jQuery 的 Ajax交互应用的技巧很重要。

  1. JSON 在 JavaScript 的制作、传输
JSON.parse()	用于将一个 JSON 字符串转换为 JavaScript 对象。
JSON.stringify()	用于将 JavaScript 值转换为 JSON 字符串。
  1. JSON 在PHP 的应用
json_encode	对变量进行 JSON 编码
json_decode	对 JSON 格式的字符串进行解码,转换为 PHP 变量
json_last_error	返回最后发生的错误

规划流程

  1. 主程式的架构做成如下图的划分;也把命名原则写上。
    2.
  2. 分成六大块
  3. 先做一个登录的检查
  4. 登录后做一个检查的回应, 这个回应是用 jQuery Ajax 完成的。
  5. 跳转到选择画面,这个画面有一个重点是,资料库的选择是使用 MySQL 的 show databases; 完成的。当选择一个Dbase 时, 就利用 jQuery的 change 事件,透过 AJAX 进入 另一个 php,再透过 show tables from database_name; 放在 ”请输入 TABLE名“ 的选择上。
  6. 选择后的程式,实际上是跳到 ”OP_jb2do_html.php“ 这个程式做分流,进行搜寻和增加的作业。
  7. 寻找資料里面会用到 page 跳转的技巧。要增加完成的按钮好跳回 重新选择 的功能。

搜索引擎 mysql插件 mysql search_搜索引擎 mysql插件

搜索引擎 mysql插件 mysql search_jquery_02