很多站长朋友们都不太清楚php复制表结构,今天小编就来给大家整理php复制表结构,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 如何用sql语句复制一张表 2、 深入PHP中的HashTable结构详解 3、 我这有一个php的网页文件,里面给了一个文件说是数据库,文件里面有很多歌不同格式的文件。该怎么倒进数据 4、 为什么将session存在数据库 5、 怎么通过php把sql数据的数据导出的表格 6、 php,如何把一个数据表的内容复制到另一个数据表中? 如何用sql语句复制一张表1、原表存在的话这样用:insert into a select * from b
2、原表不存在的话这样用:select * into a from b
sql语句常用优化技巧:
1、避免在where子句中使用 is null 或 is not null 对字段进行判断。
如:select id from table where name is null
在这个查询中,就算我们为 name 字段设置了索引,查询分析器也不会使用,因此查询效率底下。为了避免这样的查询,在数据库设计的时候,尽量将可能会出现 null 值的字段设置默认值,这里如果我们将 name 字段的默认值设置为0,那么我们就可以这样查询:
select id from table where name = 0
2、避免在 where 子句中使用 != 或 <> 操作符。
如:select name from table where id <> 0
数据库在查询时,对 != 或 <> 操作符不会使用索引,而对于 < ,<= , = , > , >= , BETWEEN AND,数据库才会使用索引。因此对于上面的查询,正确写法应该是:
select name from table where id < 0
union all
select name from table where id > 0
这里我们为什么没有使用 or 来链接 where 后的两个条件呢?这就是我们下面要说的第3个优化技巧。
3、避免在 where 子句中使用 or来链接条件。
如:select id from tabel where name = 'UncleToo' or name = 'PHP'
这种情况,我们可以这样写:
select id from tabel where name = 'UncleToo'
union all
select id from tabel where name = 'PHP'
4、少用 in 或 not in。
虽然对于 in 的条件会使用索引,不会全表扫描,但是在某些特定的情况,使用其他方法也许效果更好。
如:select name from tabel where id in(1,2,3,4,5)像这种连续的数值,我们可以使用 BETWEEN AND,如:select name from tabel where id between 1 and 5
5、注意 like 中通配符的使用。
下面的语句会导致全表扫描,尽量少用。
如:select id from tabel where name like'%UncleToo%'
而下面的语句执行效率要快的多,因为它使用了索引:
select id from tabel where name like'UncleToo%'
深入PHP中的HashTable结构详解深入PHP中的HashTable结构详解
深入PHP中的HashTable结构详解
对php内核有一定了解的人应该都知道php的精髓就是HashTable,HashTable在php的实现中无处不在。包括php的数组、什么全局变量、局部变量的作用域等等,php的hashtable拆开来说就是四部分:
hash函数:用的是time33的散列函数,将一个字符串的key转换成一个数字
一个C数组:用来储存桶(buckets)的
两个双向的链表:第一个双向链表是数组的每个元素(桶bucket)是一个双向链表,这样做是为了解决hash冲突;第二个双向链表是数组将每一个桶(bucket)连接起来,这里要连接的也就是第一个双向链表的链表头,这样做是为了遍历整个hash表用的,鸟哥有篇blog是讲php的foreach的,这里这样设计就是给foreach用的==>《深入理解PHP之数组(遍历顺序)》
我这里不再说hashtable的struct和bucket的`struct了,因为下面的推荐链接几乎都讲了,我不觉得我能描述和说的比他们好,每个人的水平不一样,我就以我现在的技术水平来描述,所以我就只把我整理的一些东西记录一下
下面是php中hash实现的两个文件:zend_hash.c zend_hash.h。这两个文件里面实现了一堆的api,也引申出了一堆的api,下面是实现出来的api的原型
复制代码 代码如下:
ZEND_API ulong zend_hash_func(const char *arKey, uint nKeyLength)
ZEND_API ulong zend_get_hash_value(const char *arKey, uint nKeyLength)
ZEND_API int _zend_hash_init(HashTable *ht, uint nSize, hash_func_t pHashFunction, dtor_func_t pDestructor, zend_bool persistent ZEND_FILE_LINE_DC)
ZEND_API void zend_hash_set_apply_protection(HashTable *ht, zend_bool bApplyProtection)
ZEND_API int _zend_hash_add_or_update(HashTable *ht, const char *arKey, uint nKeyLength, void *pData, uint nDataSize, void **pDest, int flag ZEND_FILE_LINE_DC)
ZEND_API int _zend_hash_quick_add_or_update(HashTable *ht, const char *arKey, uint nKeyLength, ulong h, void *pData, uint nDataSize, void **pDest, int flag ZEND_FILE_LINE_DC)
ZEND_API int _zend_hash_index_update_or_next_(HashTable *ht, ulong h, void *pData, uint nDataSize, void **pDest, int flag ZEND_FILE_LINE_DC)
ZEND_API int zend_hash_rehash(HashTable *ht)
static int zend_hash_do_resize(HashTable *ht)
ZEND_API int zend_hash_del_key_or_index(HashTable *ht, const char *arKey, uint nKeyLength, ulong h, int flag)
ZEND_API void zend_hash_destroy(HashTable *ht)
ZEND_API void zend_hash_clean(HashTable *ht)
static Bucket *zend_hash_apply_r(HashTable *ht, Bucket *p)
ZEND_API void zend_hash_graceful_destroy(HashTable *ht)
ZEND_API void zend_hash_graceful_reverse_destroy(HashTable *ht)
ZEND_API void zend_hash_apply(HashTable *ht, apply_func_t apply_func TSRMLS_DC)
ZEND_API void zend_hash_apply_with_argument(HashTable *ht, apply_func_arg_t apply_func, void *argument TSRMLS_DC)
ZEND_API void zend_hash_apply_with_arguments(HashTable *ht TSRMLS_DC, apply_func_args_t apply_func, int num_args, …)
ZEND_API void zend_hash_reverse_apply(HashTable *ht, apply_func_t apply_func TSRMLS_DC)
ZEND_API void zend_hash_copy(HashTable *target, HashTable *source, copy_ctor_func_t pCopyConstructor, void *tmp, uint size)
ZEND_API void _zend_hash_merge(HashTable *target, HashTable *source, copy_ctor_func_t pCopyConstructor, void *tmp, uint size, int overwrite ZEND_FILE_LINE_DC)
static zend_bool zend_hash_replace_checker_wrapper(HashTable *target, void *source_data, Bucket *p, void *pParam, merge_checker_func_t merge_checker_func)
ZEND_API void zend_hash_merge_ex(HashTable *target, HashTable *source, copy_ctor_func_t pCopyConstructor, uint size, merge_checker_func_t pMergeSource, void *pParam)
ZEND_API int zend_hash_find(const HashTable *ht, const char *arKey, uint nKeyLength, void **pData)
ZEND_API int zend_hash_quick_find(const HashTable *ht, const char *arKey, uint nKeyLength, ulong h, void **pData)
ZEND_API int zend_hash_exists(const HashTable *ht, const char *arKey, uint nKeyLength)
ZEND_API int zend_hash_quick_exists(const HashTable *ht, const char *arKey, uint nKeyLength, ulong h)
ZEND_API int zend_hash_index_find(const HashTable *ht, ulong h, void **pData)
ZEND_API int zend_hash_index_exists(const HashTable *ht, ulong h)
ZEND_API int zend_hash_num_elements(const HashTable *ht)
ZEND_API int zend_hash_get_pointer(const HashTable *ht, HashPointer *ptr)
ZEND_API int zend_hash_set_pointer(HashTable *ht, const HashPointer *ptr)
ZEND_API void zend_hash_internal_pointer_reset_ex(HashTable *ht, HashPosition *pos)
ZEND_API void zend_hash_internal_pointer_end_ex(HashTable *ht, HashPosition *pos)
ZEND_API int zend_hash_move_forward_ex(HashTable *ht, HashPosition *pos)
ZEND_API int zend_hash_move_backwards_ex(HashTable *ht, HashPosition *pos)
ZEND_API int zend_hash_get_current_key_ex(const HashTable *ht, char **str_index, uint *str_length, ulong *num_index, zend_bool duplicate, HashPosition *pos)
ZEND_API int zend_hash_get_current_key_type_ex(HashTable *ht, HashPosition *pos)
ZEND_API int zend_hash_get_current_data_ex(HashTable *ht, void **pData, HashPosition *pos)
ZEND_API int zend_hash_update_current_key_ex(HashTable *ht, int key_type, const char *str_index, uint str_length, ulong num_index, int mode, HashPosition *pos)
ZEND_API int zend_hash_sort(HashTable *ht, sort_func_t sort_func, compare_func_t compar, int renumber TSRMLS_DC)
ZEND_API int zend_hash_compare(HashTable *ht1, HashTable *ht2, compare_func_t compar, zend_bool ordered TSRMLS_DC)
ZEND_API int zend_hash_minmax(const HashTable *ht, compare_func_t compar, int flag, void **pData TSRMLS_DC)
ZEND_API ulong zend_hash_next_free_element(const HashTable *ht)
void zend_hash_display_pListTail(const HashTable *ht)
void zend_hash_display(const HashTable *ht)
;
我这有一个php的网页文件,里面给了一个文件说是数据库,文件里面有很多歌不同格式的文件。该怎么倒进数据把这个文件夹复制到你数据库安装文件夹的data文件夹中,我用的是mysql
为什么将session存在数据库建立数据库和数据库的表结构,我们可以采用php可以使用的任何的数据库,因为php和mysql的结合最好,我就使用mysql来做事例,当然根据你的需要可以改称别的数据库,同时因为mysql没有事物的功能,这也比别的数据库更快,然而保存session 书、一 不许要事物处理的,再者里我决的更好。
创建数据库:
复制代码 代码如下:CREATE DATABASE 'session'; 创建表结构 CREATE TABLE 'session'( id CHAR(30) NOT NULL , 'user 'CHAR(30), data CHAR(3000) ,PARMIRY BY ('id') );
下面我们来编写保存session的文件session_start.php
复制代码 代码如下:<?php
$con =mysql_connection("127.0.0.1","user" , "pass");
mysql_select_db("session");
function open($save_path, $session_name){return(true);}function close(){return(true);}function read($id){if($result = mysql_query("SELECT * FROM session WHERE id='$id'")){if($row = mysql_felth_row($result ))
{ return $row["data"]; }}else{return "";}}function write($id, $sess_data){if($result = mysql_query("UPDATE session SET data='$sess_data' WHERE id='$id'")){return true;}else{return false;}}function destroy($id){if($result = mysql_query("DELETE * FROM session WHERE id='$id'")){return true;}else{return false;}}/*********************************************
* WARNING - You will need to implement some *
* sort of garbage collection routine here. *
*********************************************/
function gc($maxlifetime){return true;}session_set_save_handler("open", "close", "read", "write", "destroy", "gc");
session_start();
// proceed to use sessions normally?>现在我们的工作就已经完成了,只要你在需要在使用session的时候,把session_user_start.php。包含进来,
注意,这个文件一定要在文件的第一行包含,然后就想使用文件的session一样的方法使用旧可以了。
怎么通过php把sql数据的数据导出的表格使用phpexcel插件。
<?php
/**
* erport
* 导出excel
*/
$dir = dirname ( __FILE__ );
require $dir . '/Class/db.class.php';
require $dir . '/PHPExcel/PHPExcel.php';
$dbObj = new db ();
$phpexcelObj = new PHPExcel ();
for($i = 1; $i <= 3; $i ++) {
$what = "*";
$condition = "student where grade = " . $i . " ORDER BY score DESC";
$res = $dbObj->mySelect ( $what, $condition );
if ($i > 1) {
$phpexcelObj->createSheet ();
}
$phpexcelObj->setActiveSheetIndex ( $i - 1 );
$sheetObj = $phpexcelObj->getActiveSheet ( $i );
$sheetObj->setTitle ( $i . "年级" );
$sheetObj->setCellValue ( 'A1', 'name' )->setCellValue ( 'B1', 'score' )->setCellValue ( 'C1', 'class' );
$j = 2;
foreach ( $res as $key => $val ) {
$sheetObj->setCellValue ( 'A' . $j, $res [$key] ['name'] )->setCellValue ( 'B' . $j, $res [$key] ['score'] )->setCellValue ( 'C' . $j, $res [$key] ['class'] );
$j ++;
}
}
$phpexcelObj->setActiveSheetIndex ( 1 );
$writerObj = PHPExcel_IOFactory::createWriter ( $phpexcelObj, 'Excel5' );
$writerObj->save ( $dir . '/Excels/scores.xls' );
php,如何把一个数据表的内容复制到另一个数据表中?很简单的,你首先安装一个 Navicat for PostgreSQL 一个工具(不安装或其它工具也可以),把A表中的数据导出,可以导出很多种格式,然后再新建一个B表,结构和A一样,可以利用那个工具复制建表语句,然后就可以把数据导入到B表。当然不用工具也可以,直接用SQL语句来操作。但是,用工具更傻瓜式,方便操作,管理
关于php复制表结构的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。
查看更多关于php复制表结构 php复制文件到指定目录的详细内容...