//{'totalCount':'2','rows':[{'id':'1','name':'pjq518','email':'pjq518@126.com','age':'22'},{'id':'2','name':'xiaoyu','email':'xiaoyu@126.com','age':'21'}]}
toExtJson( $table, $start="0", $limit="10", $cOns="")有4个参数, $table为表名, $cons为条件,可以为string或array
class Db {
var $conn;
/***************************************************************************
* 连接数据库
* return:MySQL 连接标识,失败返回FALSE
**************************************************************************/
function Db($host="localhost",$user="root",$pass="123456",$db="juren_gaokao") {
if(!$this->cOnn=mysql_connect($host,$user,$pass))
die("can't connect to mysql sever");
mysql_select_db($db,$this->conn);
mysql_query("SET NAMES 'UTF-8'");
}
/***************************************************************************
* 执行SQL查询
* return:查询结构集 resource
**************************************************************************/
function execute($sql) {
return mysql_query($sql,$this->conn);
}
/***************************************************************************
* 返回结构集中行数
* return:number 数字
**************************************************************************/
function findCount($sql) {
$result=$this->execute($sql);
return mysql_num_rows($result);
}
/***************************************************************************
* 执行SQL查询
* return:array 数组
**************************************************************************/
function findBySql($sql) {
$array=array();
$result=mysql_query($sql);
$i=0;
while($row=mysql_fetch_assoc($result)) {
$array[$i]=$row;
$i++;
}
return $array;
}
/***************************************************************************
*$con的几种情况
*空:返回全部记录
*array:eg. array('id'=>'1') 返回id=1的记录
*string :eg. 'id=1' 返回id=1的记录
* return:json 格式数据
***************************************************************************/
function toExtJson($table,$start="0",$limit="10",$cOns="") {
$sql=$this->generateSql($table,$cons);
$totalNum=$this->findCount($sql);
$result=$this->findBySql($sql." LIMIT ".$start." ,".$limit);
$resultNum = count($result);//当前结果数
$str="";
$str.= "{";
$str.= "'totalCount':' $totalNum',";
$str.="'rows':";
$str.="[";
for($i=0;$i<$resultNum;$i++) {
$str.="{";
$count=count($result[$i]);
$j=1;
foreach($result[$i] as $key=>$val) {
if($j<$count) {
$str.="&#39;".$key."&#39;:&#39;".$val."&#39;,";
}
elseif($j==$count) {
$str.="&#39;".$key."&#39;:&#39;".$val."&#39;";
}
$j++;
}
$str.="}";
if ($i != $resultNum-1) {
$str.= ", ";
}
}
$str.="]";
$str.="}";
return $str;
}
/***************************************************************************
* $table:表名
* $cons:sql条件
* return:SQL语句
**************************************************************************/
function generateSql($table,$cons) {
$sql="";//sql条件
$sql="select * from ".$table;
if($cons!="") {
if(is_array($cons)) {
$k=0;
foreach($cons as $key=>$val) {
if($k==0) {
$sql.="where &#39;";
$sql.=$key;
$sql.="&#39;=&#39;";
$sql.=$val."&#39;";
}else {
$sql.="and &#39;";
$sql.=$key;
$sql.="&#39;=&#39;";
$sql.=$val."&#39;";
}
$k++;
}
}else {
$sql.=" where ".$cons;
}
}
return $sql;
}
/***************************************************************************
* $table:表名
* $cons:条件
* return:XML格式文件
**************************************************************************/
function toExtXml($table,$start="0",$limit="10",$cOns="") {
$sql=$this->generateSql($table,$cons);
$totalNum=$this->findCount($sql);
$result=$this->findBySql($sql." LIMIT ".$start." ,".$limit);
$resultNum = count($result);//当前结果数
header("Content-Type: text/xml");
$xml=&#39;&#39;;
$xml.="";
$xml.="".$totalNum."";
$xml.="";
for($i=0;$i<$resultNum;$i++) {
$xml.="- ";
foreach($result[$i] as $key=>$val)
$xml.="<".$key.">".$val."".$key.">";
$xml.="";
}
$xml.="";
$xml.="";
return $xml;
}
/***************************************************************************
* $table:表名
* $mapping:数组格式头信息$map=array(&#39;No&#39;,&#39;Name&#39;,&#39;Email&#39;,&#39;Age&#39;);
* $fileName:WORD文件名称
* return:WORD格式文件
**************************************************************************/
function toWord($table,$mapping,$fileName) {
header(&#39;Content-type: application/doc&#39;);
header(&#39;Content-Disposition: attachment; filename="&#39;.$fileName.&#39;.doc"&#39;);
echo &#39;<
html xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:w="urn:schemas-microsoft-com:office:word"
xmlns="[url=http://www.w3.org/TR/REC-html40]http://www.w3.org/TR/REC-html40[/url]">
&#39;;
echo&#39;
&#39;;
if(is_array($mapping)) {
foreach($mapping as $key=>$val)
echo&#39;
&#39;.$val.&#39; | &#39;;
}
echo&#39;
&#39;;
$results=$this->findBySql(&#39;select * from &#39;.$table);
foreach($results as $result) {
echo&#39;
&#39;;
foreach($result as $key=>$val)
echo&#39;
&#39;.$val.&#39; | &#39;;
echo&#39;
&#39;;
}
echo&#39;
&#39;;
echo&#39;&#39;;
echo&#39;&#39;;
}
/***************************************************************************
* $table:表名
* $mapping:数组格式头信息$map=array(&#39;No&#39;,&#39;Name&#39;,&#39;Email&#39;,&#39;Age&#39;);
* $fileName:Excel文件名称
* return:Excel格式文件
**************************************************************************/
function toExcel($table,$mapping,$fileName) {
header("Content-type:application/vnd.ms-excel");
header("Content-Disposition:filename=".$fileName.".xls");
echo&#39;
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns="[url=http://www.w3.org/TR/REC-html40]http://www.w3.org/TR/REC-html40[/url]">
&#39;;
echo&#39;
&#39;;
echo&#39;
&#39;;
if(is_array($mapping)) {
foreach($mapping as $key=>$val)
echo&#39;
&#39;.$val.&#39; | &#39;;
}
echo&#39;
&#39;;
$results=$this->findBySql(&#39;select * from &#39;.$table);
foreach($results as $result) {
echo&#39;
&#39;;
foreach($result as $key=>$val)
echo&#39;
&#39;.$val.&#39; | &#39;;
echo&#39;
&#39;;
}
echo&#39;
&#39;;
echo&#39;&#39;;
echo&#39;&#39;;
}
function Backup($table) {
if(is_array ($table)) {
$str="";
foreach($table as $tab)
$str.=$this->get_table_content($tab);
return $str;
}else {
return $this->get_table_content($table);
}
}
/***************************************************************************
* 备份数据库数据到文件
* $table:表名
* $file:文件名
**************************************************************************/
function Backuptofile($table,$file) {
header("Content-disposition: filename= $file.sql");//所保存的文件名
header("Content-type: application/octetstream");
header("Pragma: no-cache");
header("Expires: 0");
if(is_array ($table)) {
$str="";
foreach($table as $tab)
$str.=$this->get_table_content($tab);
echo $str;
}else {
echo $this->get_table_content($table);
}
}
function Restore($table,$file="",$cOntent="") {
//排除file,content都为空或者都不为空的情况
if(($file==""&&$cOntent=="")||($file!=""&&$content!=""))
echo"参数错误";
$this->truncate($table);
if($file!="") {
if($this->RestoreFromFile($file))
return true;
else
return false;
}
if($content!="") {
if($this->RestoreFromContent($content))
return true;
else
return false;
}
}
//清空表,以便恢复数据
function truncate($table) {
if(is_array ($table)) {
$str="";
foreach($table as $tab)
$this->execute("TRUNCATE TABLE $tab");
}else {
$this->execute("TRUNCATE TABLE $table");
}
}
function get_table_content($table) {
$results=$this->findBySql("select * from $table");
$temp = "";
$crlf="rn";
foreach($results as $result) {
/*(";
foreach( $result as $key=> $val)
{
$schema_insert .= " `". $key."`,";
}
$schema_insert = ereg_replace(", $", "", $schema_insert);
$schema_insert .= ")
*/
$schema_insert = "INSERT INTO $table VALUES (";
foreach($result as $key=>$val) {
if($val != "")
$schema_insert .= " &#39;".addslashes($val)."&#39;,";
else
$schema_insert .= "NULL,";
}
$schema_insert = ereg_replace(", $", "", $schema_insert);
$schema_insert .= "); $crlf";
$temp = $temp.$schema_insert ;
}
return $temp;
}
function RestoreFromFile($file) {
if (false !== ($fp = fopen($file, &#39;r&#39;))) {
$sql_queries = trim(fread($fp, filesize($file)));
$this->splitMySqlFile($pieces, $sql_queries);
foreach ($pieces as $query) {
if(!$this->execute(trim($query)))
return false;
}
return true;
}
return false;
}
function RestoreFromContent($content) {
$cOntent= trim($content);
$this->splitMySqlFile($pieces, $content);
foreach ($pieces as $query) {
if(!$this->execute(trim($query)))
return false;
}
return true;
}
function splitMySqlFile(&$ret, $sql) {
$sql= trim($sql);
$sql=split(&#39;&#39;,$sql);
$arr=array();
foreach($sql as $sq) {
if($sq!="");
$arr[]=$sq;
}
$ret=$arr;
return true;
}
推荐阅读
-
在《Spring Boot 实战(一)》中,详细介绍了基础的CRUD操作,涵盖创建、读取、更新和删除等核心功能,适合初学者快速掌握Spring Boot框架的应用开发技巧。 ...
[详细]
蜡笔小新 2024-10-31 21:03:29
-
如何在Oracle ASM_Diskgroup中重命名现有磁盘 ...
[详细]
蜡笔小新 2024-11-01 12:48:31
-
-
Issue with the Reserved Term HOSTS in System Configuration ...
[详细]
蜡笔小新 2024-11-01 01:55:21
-
作为140字符的开创者,Twitter看似简单却异常复杂。其简洁之处在于仅用140个字符就能实现信息的高效传播,甚至在多次全球性事件中超越传统媒体的速度。然而,为了支持2亿用户的高效使用,其背后的技术架构和系统设计则极为复杂,涉及高并发处理、数据存储和实时传输等多个技术挑战。 ...
[详细]
蜡笔小新 2024-10-31 17:58:20
-
本文详细介绍了如何利用Python的Turtle库高效绘制矩形图形,适合初学者快速上手。通过具体示例代码,帮助读者理解Turtle库的基本绘图方法和技巧,同时探讨了在不同应用场景中绘制矩形的实际操作,为后续复杂图形的绘制打下坚实基础。 ...
[详细]
蜡笔小新 2024-10-31 17:36:41
-
在智能制造领域,生产数据通过先进的采集设备收集,并利用时序数据库或关系型数据库进行高效存储。这些数据经过处理后,通过可视化数据大屏呈现,为生产车间、生产控制中心以及管理层提供实时、精准的信息支持,助力不同应用场景下的决策优化和效率提升。 ...
[详细]
蜡笔小新 2024-10-31 16:58:11
-
本文深入探讨了数据库性能优化与管理策略,通过实例分析和理论研究,详细阐述了如何有效提升数据库系统的响应速度和处理能力。文章首先介绍了数据库性能优化的基本原则和常用技术,包括索引优化、查询优化和存储管理等。接着,结合实际应用场景,讨论了如何利用容器化技术(如Docker)来部署和管理数据库,以提高系统的可扩展性和稳定性。最后,文章还提供了具体的配置示例和最佳实践,帮助读者在实际工作中更好地应用这些策略。 ...
[详细]
蜡笔小新 2024-10-31 11:16:59
-
在 Windows 环境下,通过具体示例分析了 `Norton Partition Magic` 中 `PHP` 函数 `error_reporting(E_ALL ^ E_NOTICE)` 的详细解析与应用。该函数用于控制错误报告级别,例如在从 PHP 4.3.0 升级到 4.3.1 后,程序出现多处错误的原因及解决方法。本文深入探讨了错误报告配置对程序稳定性的影响,并提供了实用的调试技巧。 ...
[详细]
蜡笔小新 2024-11-01 20:40:18
-
SQL Server开发技巧:修改表结构后的视图批量更新方法与实践 ...
[详细]
蜡笔小新 2024-11-01 15:47:59
-
通过优化模板消息机制,本研究提出了一种高效的信息化推送方案。该方案利用获取的访问令牌(access token)和指定的模板ID,实现了精准且快速的信息推送,显著提升了用户体验和信息传递效率。具体实现中,通过调用相关API接口,确保了消息的准确性和及时性,为用户提供更加便捷的服务。 ...
[详细]
蜡笔小新 2024-11-01 15:24:52
-
深入解析:Explain命令的应用与字段详解 ...
[详细]
蜡笔小新 2024-10-31 20:06:25
-
本文详细解析了如何使用 jQuery 实现一个在浏览器地址栏运行的射击游戏。通过源代码分析,展示了关键的 JavaScript 技术和实现方法,并提供了在线演示链接供读者参考。此外,还介绍了如何在 Visual Studio Code 中进行开发和调试,为开发者提供了实用的技巧和建议。 ...
[详细]
蜡笔小新 2024-10-31 19:54:38
-
许多计算机科学专业的学生在大学期间都会遇到这样的困扰:课堂上教授的内容往往偏向理论,实际应用的知识点讲解得较为浅显和概括,导致在进行毕业设计时,如运用蒙特卡洛方法计算净现值(NPV)等复杂问题时感到无从下手。本文旨在探讨如何通过深入理解和实践蒙特卡洛模拟技术,解决这类计算难题,为学生的毕业设计提供实用指导。 ...
[详细]
蜡笔小新 2024-10-31 19:32:40
-
在Ubuntu系统中,由于预装了MySQL,因此无需额外安装。通过命令行登录MySQL时,可使用 `mysql -u root -p` 命令,并按提示输入密码。常见问题包括:1. 错误 1045 (28000):访问被拒绝,这通常是由于用户名或密码错误导致。为确保顺利连接,建议检查MySQL服务是否已启动,并确认用户名和密码的正确性。此外,还可以通过配置文件调整权限设置,以增强安全性。 ...
[详细]
蜡笔小新 2024-10-31 17:57:01
-
本文旨在实现Ceph块存储中RBD块设备的高效创建与安全删除功能。开发环境为CentOS 7,使用 IntelliJ IDEA 进行开发。首先介绍了 librbd 的基本概念及其在 Ceph 中的作用,随后详细描述了项目 Gradle 配置的优化过程,确保了开发环境的稳定性和兼容性。通过这一系列步骤,我们成功实现了 RBD 块设备的快速创建与安全删除,提升了系统的整体性能和可靠性。 ...
[详细]
蜡笔小新 2024-10-31 15:11:07
-