喜悦国际村 
» 游客:  注册 | 登录 | 搜索 | 统计 | 喜悦证交所 | 帮助

RSS 订阅当前论坛  

[北京]代朋友公司招聘PHP高级程序员多名

上一主题 下一主题
 67  6/7  <  1  2  3  4  5  6  7  > 
     
标题: 我的连接数据库和安全处理语句  
 
c1a1o1
版主
Rank: 7Rank: 7Rank: 7
一品带刀护卫


UID 68669
精华 0
积分 1230
帖子 2187
金钱 1230 喜悦币
威望 0
人脉 0
阅读权限 100
注册 2006-2-17
状态 离线
mysql -u root -p
--密码 micronsky.net
use sayhou_db070701
source E:\sayhou_db070701.sql


3,自己写程序搞定(适合没有服务器权限的用户)。以PHP为例。可以先把结构导入。结构一般都很小,然后再把数据整理成一行行的。用file打开这个文件。循环。一行行的导入。当然也得先把文件传到服务器上。这样也很快。
SET NAMES 'latin1'
4,以上都不行。没办法。只有把文件分成小块块。慢慢搞了

5,用PHPMYADMIN等工具。PHPMYADMIN其实算是不能用。大量数据是导不进去的




成人电影
php教材价格比较网美女图片
2007-11-15 08:34 AM#51
查看资料  Blog  发短消息  QQ  顶部
 
c1a1o1
版主
Rank: 7Rank: 7Rank: 7
一品带刀护卫


UID 68669
精华 0
积分 1230
帖子 2187
金钱 1230 喜悦币
威望 0
人脉 0
阅读权限 100
注册 2006-2-17
状态 离线
[推荐阅读] Hustren Newsletter 系统为你网站添加邮件订阅功能
enctype="multipart/form-data"



成人电影
php教材价格比较网美女图片
2007-11-17 12:56 PM#52
查看资料  Blog  发短消息  QQ  顶部
 
c1a1o1
版主
Rank: 7Rank: 7Rank: 7
一品带刀护卫


UID 68669
精华 0
积分 1230
帖子 2187
金钱 1230 喜悦币
威望 0
人脉 0
阅读权限 100
注册 2006-2-17
状态 离线
[推荐阅读] 寻找上海高速稳定的PHP空间.


<?php
/******************  
*  分页类
*******************/

class Pager

{

    var 
$displaypg 0;

    var 
$firstcount 0;

    var 
$pagenav '';

    var 
$sql '';

    

    function 
get_record_count($sql '')

    {

        if (empty(
$sql))

        {

            
$sql $this->sql;

        }

        else

        {

            
$this->sql $sql;

        }

        

        
//当SQL语句中包含GROUP BY语句时 使用mysql_num_rows

        
if (preg_match("|GROUPs*BY|ims"$sql) > 0)

        {

            
$result mysql_query($sql) or die(mysql_error());

            
$nums mysql_num_rows($result);

            return 
$nums;

        }

        else

        {

            
$sql preg_replace("|SELECT (.*) FROM|ims"'SELECT COUNT(1) AS count FROM'$sql);

            
//$sql = str_replace(trim(str_replace('SELECT' , '', substr($sql, 0, strpos($sql, 'FROM')))), ' COUNT(1) ' ,$sql);

            
$result mysql_query($sql) or die(mysql_error());

            
$row mysql_fetch_row($result);

            return 
$row[0];

        }

    }

    

    

    function 
set_page($sql$displaypg 20)

    {

        
$page = isset($_GET["page"]) ? $_GET["page"] : 1;

        

        
//URL分析:

        //$url = isset($_SERVER["REQUEST_URI"]) ? $_SERVER["REQUEST_URI"] : $_SERVER['PHP_SELF'].'?'.$_SERVER["QUERY_STRING"];

        //$parse_url=parse_url($url);

        //$url_query= isset($parse_url["query"]) ? $parse_url["query"] : ''; 
        
$url '';
        if (isset(
$_SERVER["QUERY_STRING"]))
        {
            
$url_query=ereg_replace("(^|&)page=$page"""$_SERVER['SCRIPT_NAME'].'?'.$_SERVER["QUERY_STRING"]);
            
//$url=str_replace($_SERVER["QUERY_STRING"],$url_query,$url);
            
if($url_query$url .= $url_query."&page"; else $url .= "?page";
        }
        else 
        {
            
$url .="?page";
        }

        
//页码计算:

        
$total $this->get_record_count($sql);

        

        
$lastpg     ceil($total $displaypg); //总页数

        
$page         min($lastpg$page);

        
$prepg        $page 1;                  //上一页

        
$nextpg     = ($page == $lastpg $page 1); //下一页

        
$firstcount = ($page 1) * $displaypg;

        

        if (
$firstcount 0$firstcount 0;

        
$this->firstcount $firstcount;

        
$this->displaypg $displaypg;

        
$this->sql .= " LIMIT " $firstcount ", " $displaypg

        

        

        
//开始分页导航条代码:

        
$pagenav "显示第 <B>".($total?($firstcount+1):0)."</B>-<B>".min($firstcount+$displaypg,$total)."</B> 条记录,共 $total 条记录<BR>";

        

        if(
$lastpg 1)

        {

            
$pagenav.=" <a href='$url=1'>第一页</a> ";

            if(
$prepg$pagenav.=" <a href='$url=$prepg'>上一页</a> "; else $pagenav.=" 上一页 ";

            if(
$nextpg$pagenav.=" <a href='$url=$nextpg'>下一页</a> "; else $pagenav.=" 下一页 ";

            
$pagenav.=" <a href='$url=$lastpg'>最后一页</a> ";

                

            
//下拉跳转列表,循环列出所有页码:

            
$pagenav.=" 到第 <select name='topage' size='1' style='font-size:11px;' onchange='window.location=\"$url=\"+this.value'>n";

            for(
$i=1;$i<=$lastpg;$i++){

                if(
$i==$page$pagenav.="<option value='$i' selected>$i</option>n";

                else 
$pagenav.="<option value='$i'>$i</option>n";

            }

            
$pagenav.="</select> 页,共 $lastpg 页";

        }

        

        
$this->pagenav $pagenav;

        return 
$this->sql;

    }



}
?>




成人电影
php教材价格比较网美女图片
2007-11-20 09:42 AM#53
查看资料  Blog  发短消息  QQ  顶部
 
c1a1o1
版主
Rank: 7Rank: 7Rank: 7
一品带刀护卫


UID 68669
精华 0
积分 1230
帖子 2187
金钱 1230 喜悦币
威望 0
人脉 0
阅读权限 100
注册 2006-2-17
状态 离线
[推荐阅读] 一个function的问题
<?
$d1=1195660800;
$d2=time();
$Days=round(($d1-$d2)/3600/24);
echo $Days;
?>




成人电影
php教材价格比较网美女图片
2007-11-20 10:18 AM#54
查看资料  Blog  发短消息  QQ  顶部
 
c1a1o1
版主
Rank: 7Rank: 7Rank: 7
一品带刀护卫


UID 68669
精华 0
积分 1230
帖子 2187
金钱 1230 喜悦币
威望 0
人脉 0
阅读权限 100
注册 2006-2-17
状态 离线
[推荐阅读] sougou.com 诚招中级PHP程序员(北京)
$smarty.section.p_head.index
这个与我们new的那个变量没有关系




成人电影
php教材价格比较网美女图片
2007-11-26 03:47 PM#55
查看资料  Blog  发短消息  QQ  顶部
 
c1a1o1
版主
Rank: 7Rank: 7Rank: 7
一品带刀护卫


UID 68669
精华 0
积分 1230
帖子 2187
金钱 1230 喜悦币
威望 0
人脉 0
阅读权限 100
注册 2006-2-17
状态 离线
[推荐阅读] 发贴庆祝号码升级成月亮
(原)AJAX+Smarty+(html)Frame使用
从子frame中写其他frame的Js为:
window.parent.bottomFrame.document.write(text);




成人电影
php教材价格比较网美女图片
2007-11-28 10:13 AM#56
查看资料  Blog  发短消息  QQ  顶部
 
c2a2o2
新手上路
Rank: 1


UID 94864
精华 0
积分 32
帖子 50
金钱 32 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2007-7-4
状态 离线
[推荐阅读] 什么情况下会出现这样的情况?
<script type="text/javascript">
function chk(form)
{
        if(form.t_name.value =='')
        {
                alert('圈子名称不能为空!');
                form.t_name.focus();
                return false;
        }
       
        if(form.t_one.value =='')
        {
                alert('一级分类不能为空!');
                form.t_one.focus();
                return false;
        }
        if(form.t_two.value =='')
        {
                alert('二级分类不能为空!');
                form.t_two.focus();
                return false;
        }
        if(form.t_introduction.value.length>50)
        {
                alert('贴吧描述部分不能大于50个汉字!');
                form.t_introduction.focus();
                return false;
        }
       
        return true;
2007-12-3 02:47 PM#57
查看资料  发短消息  顶部
 
jingangel
中级会员
Rank: 3Rank: 3


UID 72698
精华 0
积分 350
帖子 244
金钱 350 喜悦币
威望 0
人脉 0
阅读权限 30
注册 2006-5-2
来自 山西
状态 离线
[推荐阅读] 有没有mysql 转移到 sqlite 的工具?
有一些可以用得上,楼主继续



http://www.zshome.net.cn 装饰·家 新站上市
2007-12-4 02:51 PM#58
查看资料  Blog  发短消息  QQ  顶部
 
不乐无语
新手上路
Rank: 1


UID 102796
精华 0
积分 0
帖子 40
金钱 0 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2007-12-5
状态 离线
[推荐阅读] 闲的无聊,发个小玩意
学习一下,谢了
2007-12-6 08:04 AM#59
查看资料  发短消息  顶部
 
白眉大侠
新手上路
Rank: 1



UID 75905
精华 0
积分 10
帖子 21
金钱 10 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2006-7-4
状态 离线
[推荐阅读] 北京 诚聘PHP程序员
降级的时候导出库可以用这个方法
mysqldump -uroot -p --default-character-set=latin1 --set-charset=gbk --skip-opt zh1031_db1  
  --compatible=mysql40 > d4.sql
这样导出的就是4.0的库勒
目录 [显示隐藏]  
1 原理

2 常见问题解决方案

2.1 我的数据使用latin1或其他编码存储中文信息,但phpMyAdmin中中文为乱码
2.2 我的论坛原来使用Discuz! 4.0.0 RC版本+MySQL 4.1没有问题,但升级到正式版后就有了乱码


2.2.1 更改存储字符集


2.2.1.1 导出
2.2.1.2 导入


2.2.2 更改连接方式


2.2.2.1 Discuz! 4.0.0
2.2.2.2 Discuz! 4.0.0+


2.3 应当如何升级MySQL 4.0的数据到MySQL 4.1+中
2.4 Discuz!4.1数据恢复的问题


[编辑]原理
注意:本文档只对MySQL 4.1及以上的数据库版本有效,之前的MySQL版本,由于没有提供对字符集的完整支持,因此也不存在此类问题。

MySQL 4.1开始,对多语言的支持有了很大变化 (这导致了问题的出现)。尽管大部分的地方 (包括个人使用和主机提供商),MySQL 3、4.0 仍然占主导地位;但 MySQL 4.1 是 MySQL 官方推荐的数据库,已经有主机提供商开始提供并将会越来越多;因为 latin1 在许多地方 (下边会详细描述具体是哪些地方) 作为默认的字符集,成功的蒙蔽了许多 PHP 程序的开发者和用户,掩盖了在中文等语言环境下会出现的问题。

MySQL 4.1 对于字符集的指定可以细化到一台机器上安装的 MySQL,其中的一个数据库,其中的一张表,其中的一栏,应该用什么字符集。但是,传统的 Web 程序在创建数据库和数据表时并没有使用那么复杂的配置,它们用的是默认的配置,那么,默认的配置从何而来呢?

编译 MySQL 时,指定了一个默认的字符集,这个字符集是 latin1;
安装 MySQL 时,可以在配置文件 (my.ini) 中指定一个默认的的字符集,如果没指定,这个值继承自编译时指定的;
启动 mysqld 时,可以在命令行参数中指定一个默认的的字符集,如果没指定,这个值继承自配置文件中的;
此时 character_set_server 被设定为这个默认的字符集;
当创建一个新的数据库时,除非明确指定,这个数据库的字符集被缺省设定为 character_set_server;
当选定了一个数据库时,character_set_database 被设定为这个数据库默认的字符集;
在这个数据库里创建一张表时,表默认的字符集被设定为 character_set_database,也就是这个数据库默认的字符集;
当在表内设置一栏时,除非明确指定,否则此栏缺省的字符集就是表默认的字符集;
这个字符集就是数据库中实际存储数据采用的字符集,mysqldump 出来的内容就是这个字符集下的;
想要进行“正确”的存储和得到“正确”的结果,最方便的是在所有query开始之前执行一下:

SET NAMES 'gbk';
其中gbk是数据库字符集。

[编辑]常见问题解决方案
[编辑]我的数据使用latin1或其他编码存储中文信息,但phpMyAdmin中中文为乱码
这问题是由于新版本的phpMyAdmin都是强制使用正确的字符集进行数据库连接和显示的,因此如果存储内码和实际内码不一致,phpMyAdmin是无法识别的。对于简体中文,phpMyAdmin可识别gbk/utf8;繁体中文,可识别big5/utf8。如果你确定想使用这种“不正确”的字符集(事实上通常在MySQL 4.1之前大家都是用“不正确”的字符集存储数据的)存储中文论坛数据,那么请使用phpMyAdmin 2.5.x的老版本,他会使用最老和最普通的方式连接数据库,这样便可以正常管理。

[编辑]我的论坛原来使用Discuz! 4.0.0 RC版本+MySQL 4.1没有问题,但升级到正式版后就有了乱码
浏览这问题前请您先看一下上一个问题的解答,您的情况和上面的情况差不多。RC版本使用“最老和最普通的方式”连接数据库,因此你如果使用“不正确”的字符集存储,事实上是没有问题的,但Discuz! 4.0.0正式版使用了与phpMyAdmin新版本相同的“正确”的数据库字符集,因此导致原来“不正确”的存储和“正确”的连接产生冲突,进而发生乱码。

解决此类问题,有如下两种方案:

[编辑]更改存储字符集
主要的思想就是把数据库的字符集有latin1改为gbk,big5,或者utf8; 以下操作必须拥有主机权限。假设当前操作的数据库名为:database

[编辑]导出
首先需要把数据导为mysql4.0的格式,具体的命令如下: mysqldump -uroot -p --default-character-set=latin1 --set-charset=gbk --skip-opt databse > test.sql

--default-characte-set 以前数据库的字符集,这个一般情况下都是latin1的,
--set-charset 导出的数据的字符集,这个可以设置为gbk,utf8,或者big5
[编辑]导入
首先使用下面语句新建一个GBK字符集的数据库(test)

CREATE DATABASE `test` DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;
然后把刚才导出的数据导入到当前的数据库中就ok了。

mysql -uroot -p --default-character-set=gbk -f test<test.sql
通过以上的导出和导入就把数据库的字符集改为正确的存储方式了。

总结:这种方案比较麻烦,但相对以后则一直都是使用MySQL“正确”的方式进行存储和数据连接,并且新版本phpMyAdmin不会乱码。

[编辑]更改连接方式
[编辑]Discuz! 4.0.0
对于Discuz! 4.0.0正式版,您可以找到./include/db_mysql.class.php,将

mysql_query("SET NAMES '".str_replace('-', '', $GLOBALS['charset'])."'");
前面加上“//”,即将其注释掉,同时我们建议您在转换数据前就注释,以免造成转换后的数据乱码。

[编辑]Discuz! 4.0.0+
对于Discuz! 4.0.0以后的版本,已经支持在config.inc.php中使用单独的$dbcharset来设定数据库字符集,因此可根据您的实际情况选择留空(与$charset的设置相同),或指定为特定的数据库字符集(如latin1)

总结:折衷方案。数据使用“不正确”的内码存储,但显示和使用能够正常,phpMyAdmin新版本乱码,老版本可用。备份和恢复时候需要特别注意字符集问题。

[编辑]应当如何升级MySQL 4.0的数据到MySQL 4.1+中
如果数据文件中有中文信息,那么将MySQL 4.0的数据文件,直接拷贝到MySQL 4.1中就是不可以的,即便在my.ini中设置了default-character-set为正确的字符集。虽然貌似没有问题,但MySQL 4.1的字符集有一处非常恼人的地方,以gbk为例,原本MySQL 4.0数据中varchar,char等长度都会变为原来的一半,这样存储中文容量不变,而英文的存储容量就少了一半。这是直接拷贝数据文件带来的最大问题。

所以,升级的根本,如果想使用“正确”的字符集,还是先用mysqldump导出成文件,然后导入。

至于如果原来用的latin1,现在在MySQL 4.1中还想继续“错误的”使用latin1,那么只需把default-character-set设置为latin1,并且在论坛中更改连接方式即可,这样的情况是可以直接拷贝数据文件的。

[编辑]Discuz!4.1数据恢复的问题
恢复数据的时候出现这样的提示: Discuz! info: MySQL Query Error User: admin Time: 2006-3-30 10:00am Script: /admincp.php SQL: SET NAMES 'gbk' Error: Unknown system variable 'NAMES' Errno.: 1193 An error report has been dispatched to our administrator.


原因是:数据库现在用的字符集和原来用的不是同一种,比如现在用的是UTF8原来用的是GBK就会有这样的错误提示,把备份文件中的字符集改一下, 如果数据小的话直接另存为utf8就可以了
2008-1-12 04:47 PM#60
查看资料  发短消息  顶部
 67  6/7  <  1  2  3  4  5  6  7  > 
     


  可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题 | 开通个人空间  


 




Powered by Discuz! 6.1.0  © 2001-2010 Comsenz Inc.
Processed in 0.068636 second(s), 6 queries

(冀ICP备05009913号) 管理员:sadly 邮箱/MSN: sadly@phpx.com QQ:824008(长隐) 清除 Cookies - - Archiver - WAP