<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>phplook&#124;陆柯</title>
	<atom:link href="http://www.phplook.com/feed" rel="self" type="application/rss+xml" />
	<link>http://www.phplook.com</link>
	<description>一个闷骚男的理性(php,mysql,js)和感性(散文，诗歌)的集合</description>
	<lastBuildDate>Wed, 07 Mar 2012 15:31:17 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>分享一个基础数据库连接类</title>
		<link>http://www.phplook.com/uncategorized/41.html</link>
		<comments>http://www.phplook.com/uncategorized/41.html#comments</comments>
		<pubDate>Wed, 07 Mar 2012 15:31:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://www.phplook.com/?p=41</guid>
		<description><![CDATA[‘常回首，泪眼朦胧’，看看以前我们一起走过的“类”。。。。。 &#160; &#60;?php class mysql {     private $db_host; //数据库主机     private $db_user; //数据库用户名     private $db_pwd; //数据库用户名密码     private $db_database; //数据库名     private $conn; //数据库连接标识;     private $result; //执行query命令的结果资源标识     private $sql; //sql执行语句     private $row; //返回的条目数     private $coding; //数据库编码，GBK,UTF8,gb2312     private $bulletin = true; //是否开启错误记录     private $show_error = false; //测试阶段，显示所有错误,具有安全隐患,默认关闭     [...]]]></description>
			<content:encoded><![CDATA[<p>‘常回首，泪眼朦胧’，看看以前我们一起走过的“类”。。。。。</p>
<p>&nbsp;</p>
<ol>
<li>&lt;?php</li>
<li>class mysql {</li>
<li>    private $db_host; //数据库主机</li>
<li>    private $db_user; //数据库用户名</li>
<li>    private $db_pwd; //数据库用户名密码</li>
<li>    private $db_database; //数据库名</li>
<li>    private $conn; //数据库连接标识;</li>
<li>    private $result; //执行query命令的结果资源标识</li>
<li>    private $sql; //sql执行语句</li>
<li>    private $row; //返回的条目数</li>
<li>    private $coding; //数据库编码，GBK,UTF8,gb2312</li>
<li>    private $bulletin = true; //是否开启错误记录</li>
<li>    private $show_error = false; //测试阶段，显示所有错误,具有安全隐患,默认关闭</li>
<li>    private $is_error = false; //发现错误是否立即终止,默认true,建议不启用，因为当有问题时用户什么也看不到是很苦恼的</li>
<li></li>
<li>    /*构造函数*/</li>
<li>    public function __construct($db_host, $db_user, $db_pwd, $db_database, $conn, $coding) {</li>
<li>        $this-&gt;db_host = $db_host;</li>
<li>        $this-&gt;db_user = $db_user;</li>
<li>        $this-&gt;db_pwd = $db_pwd;</li>
<li>        $this-&gt;db_database = $db_database;</li>
<li>        $this-&gt;conn = $conn;</li>
<li>        $this-&gt;coding = $coding;</li>
<li>        $this-&gt;connect();</li>
<li>    }</li>
<li></li>
<li>    /*数据库连接*/</li>
<li>    public function connect() {</li>
<li>        if ($this-&gt;conn == “pconn”) {</li>
<li>            //永久链接</li>
<li>            $this-&gt;conn = mysql_pconnect($this-&gt;db_host, $this-&gt;db_user, $this-&gt;db_pwd);</li>
<li>        } else {</li>
<li>            //即使链接</li>
<li>            $this-&gt;conn = mysql_connect($this-&gt;db_host, $this-&gt;db_user, $this-&gt;db_pwd);</li>
<li>        }</li>
<li></li>
<li>        if (!mysql_select_db($this-&gt;db_database, $this-&gt;conn)) {</li>
<li>            if ($this-&gt;show_error) {</li>
<li>                $this-&gt;show_error(“数据库不可用：”, $this-&gt;db_database);</li>
<li>            }</li>
<li>        }</li>
<li>        mysql_query(“SET NAMES $this-&gt;coding”);</li>
<li>    }</li>
<li></li>
<li>    /*数据库执行语句，可执行查询添加修改删除等任何sql语句*/</li>
<li>    public function query($sql) {</li>
<li>        if ($sql == “”) {</li>
<li>            $this-&gt;show_error(“SQL语句错误：”, “SQL查询语句为空”);</li>
<li>        }</li>
<li>        $this-&gt;sql = $sql;</li>
<li></li>
<li>        $result = mysql_query($this-&gt;sql, $this-&gt;conn);</li>
<li></li>
<li>        if (!$result) {</li>
<li>            //调试中使用，sql语句出错时会自动打印出来</li>
<li>            if ($this-&gt;show_error) {</li>
<li>                $this-&gt;show_error(“错误SQL语句：”, $this-&gt;sql);</li>
<li>            }</li>
<li>        } else {</li>
<li>            $this-&gt;result = $result;</li>
<li>        }</li>
<li>        return $this-&gt;result;</li>
<li>    }</li>
<li></li>
<li>    /*创建添加新的数据库*/</li>
<li>    public function create_database($database_name) {</li>
<li>        $database = $database_name;</li>
<li>        $sqlDatabase = &#8216;create database &#8216; . $database;</li>
<li>        $this-&gt;query($sqlDatabase);</li>
<li>    }</li>
<li></li>
<li>    /*查询服务器所有数据库*/</li>
<li>    //将系统数据库与用户数据库分开，更直观的显示？</li>
<li>    public function show_databases() {</li>
<li>        $this-&gt;query(“show databases”);</li>
<li>        echo “现有数据库：” . $amount = $this-&gt;db_num_rows($rs);</li>
<li>        echo “&lt;br /&gt;”;</li>
<li>        $i = 1;</li>
<li>        while ($row = $this-&gt;fetch_array($rs)) {</li>
<li>            echo “$i $row[Database]“;</li>
<li>            echo “&lt;br /&gt;”;</li>
<li>            $i++;</li>
<li>        }</li>
<li>    }</li>
<li></li>
<li>    //以数组形式返回主机中所有数据库名</li>
<li>    public function databases() {</li>
<li>        $rsPtr = mysql_list_dbs($this-&gt;conn);</li>
<li>        $i = 0;</li>
<li>        $cnt = mysql_num_rows($rsPtr);</li>
<li>        while ($i &lt; $cnt) {</li>
<li>            $rs[] = mysql_db_name($rsPtr, $i);</li>
<li>            $i++;</li>
<li>        }</li>
<li>        return $rs;</li>
<li>    }</li>
<li></li>
<li>    /*查询数据库下所有的表*/</li>
<li>    public function show_tables($database_name) {</li>
<li>        $this-&gt;query(“show tables”);</li>
<li>        echo “现有数据库：” . $amount = $this-&gt;db_num_rows($rs);</li>
<li>        echo “&lt;br /&gt;”;</li>
<li>        $i = 1;</li>
<li>        while ($row = $this-&gt;fetch_array($rs)) {</li>
<li>            $columnName = “Tables_in_” . $database_name;</li>
<li>            echo “$i $row[$columnName]“;</li>
<li>            echo “&lt;br /&gt;”;</li>
<li>            $i++;</li>
<li>        }</li>
<li>    }</li>
<li></li>
<li>    /*</li>
<li>    mysql_fetch_row()    array  $row[0],$row[1],$row[2]</li>
<li>    mysql_fetch_array()  array  $row[0] 或 $row[id]</li>
<li>    mysql_fetch_assoc()  array  用$row-&gt;content 字段大小写敏感</li>
<li>    mysql_fetch_object() object 用$row[id],$row[content] 字段大小写敏感</li>
<li>    */</li>
<li></li>
<li>    /*取得结果数据*/</li>
<li>    public function mysql_result_li() {</li>
<li>        return mysql_result($str);</li>
<li>    }</li>
<li></li>
<li>    /*取得记录集,获取数组-索引和关联,使用$row['content'] */</li>
<li>    public function fetch_array($resultt=”") {</li>
<li>        if($resultt&lt;&gt;”"){</li>
<li>            return mysql_fetch_array($resultt);</li>
<li>        }else{</li>
<li>        return mysql_fetch_array($this-&gt;result);</li>
<li>        }</li>
<li>    }</li>
<li></li>
<li>    //获取关联数组,使用$row['字段名']</li>
<li>    public function fetch_assoc() {</li>
<li>        return mysql_fetch_assoc($this-&gt;result);</li>
<li>    }</li>
<li></li>
<li>    //获取数字索引数组,使用$row[0],$row[1],$row[2]</li>
<li>    public function fetch_row() {</li>
<li>        return mysql_fetch_row($this-&gt;result);</li>
<li>    }</li>
<li></li>
<li>    //获取对象数组,使用$row-&gt;content</li>
<li>    public function fetch_Object() {</li>
<li>        return mysql_fetch_object($this-&gt;result);</li>
<li>    }</li>
<li></li>
<li>    //简化查询select</li>
<li>    public function findall($table) {</li>
<li>        $this-&gt;query(“SELECT * FROM $table”);</li>
<li>    }</li>
<li></li>
<li>    //简化查询select</li>
<li>    public function select($table, $columnName = “*”, $condition = ”, $debug = ”) {</li>
<li>        $condition = $condition ? &#8216; Where &#8216; . $condition : NULL;</li>
<li>        if ($debug) {</li>
<li>            echo “SELECT $columnName FROM $table $condition”;</li>
<li>        } else {</li>
<li>            $this-&gt;query(“SELECT $columnName FROM $table $condition”);</li>
<li>        }</li>
<li>    }</li>
<li></li>
<li>    //简化删除del</li>
<li>    public function delete($table, $condition, $url = ”) {</li>
<li>        if ($this-&gt;query(“DELETE FROM $table WHERE $condition”)) {</li>
<li>            if (!empty ($url))</li>
<li>                $this-&gt;Get_admin_msg($url, &#8216;删除成功！&#8217;);</li>
<li>        }</li>
<li>    }</li>
<li></li>
<li>    //简化插入insert</li>
<li>    public function insert($table, $columnName, $value, $url = ”) {</li>
<li>        if ($this-&gt;query(“INSERT INTO $table ($columnName) VALUES ($value)”)) {</li>
<li>            if (!empty ($url))</li>
<li>                $this-&gt;Get_admin_msg($url, &#8216;添加成功！&#8217;);</li>
<li>        }</li>
<li>    }</li>
<li></li>
<li>    //简化修改update</li>
<li>    public function update($table, $mod_content, $condition, $url = ”) {</li>
<li>        //echo “UPDATE $table SET $mod_content WHERE $condition”; exit();</li>
<li>        if ($this-&gt;query(“UPDATE $table SET $mod_content WHERE $condition”)) {</li>
<li>            if (!empty ($url))</li>
<li>                $this-&gt;Get_admin_msg($url);</li>
<li>        }</li>
<li>    }</li>
<li></li>
<li>    /*取得上一步 INSERT 操作产生的 ID*/</li>
<li>    public function insert_id() {</li>
<li>        return mysql_insert_id();</li>
<li>    }</li>
<li></li>
<li>    //指向确定的一条数据记录</li>
<li>    public function db_data_seek($id) {</li>
<li>        if ($id &gt; 0) {</li>
<li>            $id = $id -1;</li>
<li>        }</li>
<li>        if (!@ mysql_data_seek($this-&gt;result, $id)) {</li>
<li>            $this-&gt;show_error(“SQL语句有误：”, “指定的数据为空”);</li>
<li>        }</li>
<li>        return $this-&gt;result;</li>
<li>    }</li>
<li></li>
<li>    // 根据select查询结果计算结果集条数</li>
<li>    public function db_num_rows() {</li>
<li>        if ($this-&gt;result == null) {</li>
<li>            if ($this-&gt;show_error) {</li>
<li>                $this-&gt;show_error(“SQL语句错误”, “暂时为空，没有任何内容！”);</li>
<li>            }</li>
<li>        } else {</li>
<li>            return mysql_num_rows($this-&gt;result);</li>
<li>        }</li>
<li>    }</li>
<li></li>
<li>    // 根据insert,update,delete执行结果取得影响行数</li>
<li>    public function db_affected_rows() {</li>
<li>        return mysql_affected_rows();</li>
<li>    }</li>
<li></li>
<li>    //输出显示sql语句</li>
<li>    public function show_error($message = “”, $sql = “”) {</li>
<li>        if (!$sql) {</li>
<li>            echo “&lt;font color=&#8217;red&#8217;&gt;” . $message . “&lt;/font&gt;”;</li>
<li>            echo “&lt;br /&gt;”;</li>
<li>        } else {</li>
<li>            echo “&lt;fieldset&gt;”;</li>
<li>            echo “&lt;legend&gt;错误信息提示:&lt;/legend&gt;&lt;br /&gt;”;</li>
<li>            echo “&lt;div style=&#8217;font-size:14px; clear:both; font-family:Verdana, Arial, Helvetica, sans-serif;&#8217;&gt;”;</li>
<li>            echo “&lt;div style=&#8217;height:20px; background:#000000; border:1px #000000 solid&#8217;&gt;”;</li>
<li>            echo “&lt;font color=&#8217;white&#8217;&gt;错误号：12142&lt;/font&gt;”;</li>
<li>            echo “&lt;/div&gt;&lt;br /&gt;”;</li>
<li>            echo “错误原因：” . mysql_error() . “&lt;br /&gt;&lt;br /&gt;”;</li>
<li>            echo “&lt;div style=&#8217;height:20px; background:#FF0000; border:1px #FF0000 solid&#8217;&gt;”;</li>
<li>            echo “&lt;font color=&#8217;white&#8217;&gt;” . $message . “&lt;/font&gt;”;</li>
<li>            echo “&lt;/div&gt;”;</li>
<li>            echo “&lt;font color=&#8217;red&#8217;&gt;&lt;pre&gt;” . $sql . “&lt;/pre&gt;&lt;/font&gt;”;</li>
<li>            $ip = $this-&gt;getip();</li>
<li>            if ($this-&gt;bulletin) {</li>
<li>                $time = date(“Y-m-d H:i:s”);</li>
<li>                $message = $message . “\r\n$this-&gt;sql” . “\r\n客户IP:$ip” . “\r\n时间 :$time” . “\r\n\r\n”;</li>
<li></li>
<li>                $server_date = date(“Y-m-d”);</li>
<li>                $filename = $server_date . “.txt”;</li>
<li>                $file_path = “error/” . $filename;</li>
<li>                $error_content = $message;</li>
<li>                //$error_content=”错误的数据库，不可以链接”;</li>
<li>                $file = “error”; //设置文件保存目录</li>
<li></li>
<li>                //建立文件夹</li>
<li>                if (!file_exists($file)) {</li>
<li>                    if (!mkdir($file, 0777)) {</li>
<li>                        //默认的 mode 是 0777，意味着最大可能的访问权</li>
<li>                        die(“upload files directory does not exist and creation failed”);</li>
<li>                    }</li>
<li>                }</li>
<li></li>
<li>                //建立txt日期文件</li>
<li>                if (!file_exists($file_path)) {</li>
<li></li>
<li>                    //echo “建立日期文件”;</li>
<li>                    fopen($file_path, “w+”);</li>
<li></li>
<li>                    //首先要确定文件存在并且可写</li>
<li>                    if (is_writable($file_path)) {</li>
<li>                        //使用添加模式打开$filename，文件指针将会在文件的开头</li>
<li>                        if (!$handle = fopen($file_path, &#8216;a&#8217;)) {</li>
<li>                            echo “不能打开文件 $filename”;</li>
<li>                            exit;</li>
<li>                        }</li>
<li></li>
<li>                        //将$somecontent写入到我们打开的文件中。</li>
<li>                        if (!fwrite($handle, $error_content)) {</li>
<li>                            echo “不能写入到文件 $filename”;</li>
<li>                            exit;</li>
<li>                        }</li>
<li></li>
<li>                        //echo “文件 $filename 写入成功”;</li>
<li></li>
<li>                        echo “——错误记录被保存!”;</li>
<li></li>
<li>                        //关闭文件</li>
<li>                        fclose($handle);</li>
<li>                    } else {</li>
<li>                        echo “文件 $filename 不可写”;</li>
<li>                    }</li>
<li></li>
<li>                } else {</li>
<li>                    //首先要确定文件存在并且可写</li>
<li>                    if (is_writable($file_path)) {</li>
<li>                        //使用添加模式打开$filename，文件指针将会在文件的开头</li>
<li>                        if (!$handle = fopen($file_path, &#8216;a&#8217;)) {</li>
<li>                            echo “不能打开文件 $filename”;</li>
<li>                            exit;</li>
<li>                        }</li>
<li></li>
<li>                        //将$somecontent写入到我们打开的文件中。</li>
<li>                        if (!fwrite($handle, $error_content)) {</li>
<li>                            echo “不能写入到文件 $filename”;</li>
<li>                            exit;</li>
<li>                        }</li>
<li></li>
<li>                        //echo “文件 $filename 写入成功”;</li>
<li>                        echo “——错误记录被保存!”;</li>
<li></li>
<li>                        //关闭文件</li>
<li>                        fclose($handle);</li>
<li>                    } else {</li>
<li>                        echo “文件 $filename 不可写”;</li>
<li>                    }</li>
<li>                }</li>
<li></li>
<li>            }</li>
<li>            echo “&lt;br /&gt;”;</li>
<li>            if ($this-&gt;is_error) {</li>
<li>                exit;</li>
<li>            }</li>
<li>        }</li>
<li>        echo “&lt;/div&gt;”;</li>
<li>        echo “&lt;/fieldset&gt;”;</li>
<li></li>
<li>        echo “&lt;br /&gt;”;</li>
<li>    }</li>
<li></li>
<li>    //释放结果集</li>
<li>    public function free() {</li>
<li>        @ mysql_free_result($this-&gt;result);</li>
<li>    }</li>
<li></li>
<li>    //数据库选择</li>
<li>    public function select_db($db_database) {</li>
<li>        return mysql_select_db($db_database);</li>
<li>    }</li>
<li></li>
<li>    //查询字段数量</li>
<li>    public function num_fields($table_name) {</li>
<li>        //return mysql_num_fields($this-&gt;result);</li>
<li>        $this-&gt;query(“select * from $table_name”);</li>
<li>        echo “&lt;br /&gt;”;</li>
<li>        echo “字段数：” . $total = mysql_num_fields($this-&gt;result);</li>
<li>        echo “&lt;pre&gt;”;</li>
<li>        for ($i = 0; $i &lt; $total; $i++) {</li>
<li>            print_r(mysql_fetch_field($this-&gt;result, $i));</li>
<li>        }</li>
<li>        echo “&lt;/pre&gt;”;</li>
<li>        echo “&lt;br /&gt;”;</li>
<li>    }</li>
<li></li>
<li>    //取得 MySQL 服务器信息</li>
<li>    public function mysql_server($num = ”) {</li>
<li>        switch ($num) {</li>
<li>            case 1 :</li>
<li>                return mysql_get_server_info(); //MySQL 服务器信息</li>
<li>                break;</li>
<li></li>
<li>            case 2 :</li>
<li>                return mysql_get_host_info(); //取得 MySQL 主机信息</li>
<li>                break;</li>
<li></li>
<li>            case 3 :</li>
<li>                return mysql_get_client_info(); //取得 MySQL 客户端信息</li>
<li>                break;</li>
<li></li>
<li>            case 4 :</li>
<li>                return mysql_get_proto_info(); //取得 MySQL 协议信息</li>
<li>                break;</li>
<li></li>
<li>            default :</li>
<li>                return mysql_get_client_info(); //默认取得mysql版本信息</li>
<li>        }</li>
<li>    }</li>
<li></li>
<li>    //析构函数，自动关闭数据库,垃圾回收机制</li>
<li>    public function __destruct() {</li>
<li>        if (!empty ($this-&gt;result)) {</li>
<li>            $this-&gt;free();</li>
<li>        }</li>
<li>        mysql_close($this-&gt;conn);</li>
<li>    } //function __destruct();</li>
<li></li>
<li>    /*获得客户端真实的IP地址*/</li>
<li>    function getip() {</li>
<li>        if (getenv(“HTTP_CLIENT_IP”) &amp;&amp; strcasecmp(getenv(“HTTP_CLIENT_IP”), “unknown”)) {</li>
<li>            $ip = getenv(“HTTP_CLIENT_IP”);</li>
<li>        } else</li>
<li>            if (getenv(“HTTP_X_FORWARDED_FOR”) &amp;&amp; strcasecmp(getenv(“HTTP_X_FORWARDED_FOR”), “unknown”)) {</li>
<li>                $ip = getenv(“HTTP_X_FORWARDED_FOR”);</li>
<li>            } else</li>
<li>                if (getenv(“REMOTE_ADDR”) &amp;&amp; strcasecmp(getenv(“REMOTE_ADDR”), “unknown”)) {</li>
<li>                    $ip = getenv(“REMOTE_ADDR”);</li>
<li>                } else</li>
<li>                    if (isset ($_SERVER['REMOTE_ADDR']) &amp;&amp; $_SERVER['REMOTE_ADDR'] &amp;&amp; strcasecmp($_SERVER['REMOTE_ADDR'], “unknown”)) {</li>
<li>                        $ip = $_SERVER['REMOTE_ADDR'];</li>
<li>                    } else {</li>
<li>                        $ip = “unknown”;</li>
<li>                    }</li>
<li>        return ($ip);</li>
<li>    }</li>
<li>    function inject_check($sql_str) { //防止注入</li>
<li>        $check = eregi(&#8216;select|insert|update|delete|\&#8217;|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile&#8217;, $sql_str);</li>
<li>        if ($check) {</li>
<li>            echo “输入非法注入内容！”;</li>
<li>            exit ();</li>
<li>        } else {</li>
<li>            return $sql_str;</li>
<li>        }</li>
<li>    }</li>
<li>    function checkurl() { //检查来路</li>
<li>        if (preg_replace(“/https?:\/\/([^\:\/]+).*/i”, “\\1&#8243;, $_SERVER['HTTP_REFERER']) !== preg_replace(“/([^\:]+).*/”, “\\1&#8243;, $_SERVER['HTTP_HOST'])) {</li>
<li>            header(“Location: http://www.dareng.com”);</li>
<li>            exit();</li>
<li>        }</li>
<li>    }</li>
<li></li>
<li>}</li>
<li>?&gt;</li>
</ol>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.phplook.com/uncategorized/41.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>thinkphp数据库修改，新字段无法找到</title>
		<link>http://www.phplook.com/php/36.html</link>
		<comments>http://www.phplook.com/php/36.html#comments</comments>
		<pubDate>Tue, 06 Mar 2012 15:16:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.phplook.com/?p=36</guid>
		<description><![CDATA[最近在用thinkphp开发一个旅游线路的散客提交系统，但由于中途用户需求变更，需要修改数据库。这是一个令人崩溃的事儿，虽然客户说的轻描淡写的，可对我们得团队来说，只能哑巴吃黄连。 好，在我发牢骚之后，给出今天的问题，当我修改完数据库之后，其中的一个表有原来的26个字段，暴涨为41个，之后我修改操作这个数据表的表单，但我把表单建好之后问题就出现啦。我先打印出create出的对象，本来是要把所有的字段都压入这个对象，可是打印出的结果让我极为崩溃&#8212;&#8212;&#8211;只打印出原来的字段，新加的字段没有压入。 查了一些资料之后才发现：thinkphp默认会在第一次运行的时候将一些信息cache下来,数据库结构变动后cache里的没变，所以他每次读取cache里的内容。 解决thinkphp数据库修改，新字段无法找到的 方法： 方法一.在你的项目下的runtime中的cache中找到date，将里面的数据表缓存文件删除。 方法二.可以通过设置DB_FIELDS_CACHE 参数来关闭字段自动缓存，如果在开发的时候经常变动数据库的结构，而不希望进行数据表的字段缓存，可以在项目配置文件中增加如下配置： &#8216;DB_FIELDS_CACHE&#8217;=&#62;false 至此这个问题可以得到解决，其实对于调试状态中，可以关掉此项。 &#160;]]></description>
			<content:encoded><![CDATA[<p>最近在用<strong>thinkphp</strong>开发一个旅游线路的散客提交系统，但由于中途用户需求变更，需要修改数据库。这是一个令人崩溃的事儿，虽然客户说的轻描淡写的，可对我们得团队来说，只能哑巴吃黄连。</p>
<p>好，在我发牢骚之后，给出今天的问题，当我修改完数据库之后，其中的一个表有原来的26个字段，暴涨为41个，之后我修改操作这个数据表的表单，但我把表单建好之后问题就出现啦。我先打印出create出的对象，本来是要把所有的字段都压入这个对象，可是打印出的结果让我极为崩溃&#8212;&#8212;&#8211;只打印出原来的字段，新加的字段没有压入。</p>
<p>查了一些资料之后才发现：thinkphp默认会在第一次运行的时候将一些信息cache下来,数据库结构变动后cache里的没变，所以他每次读取cache里的内容。</p>
<p>解决<strong>thinkphp数据库修改，新字段无法找到</strong>的 方法<strong>：</strong></p>
<p><strong></strong>方法一.在你的项目下的runtime中的cache中找到date，将里面的数据表缓存文件删除。</p>
<p>方法二.可以通过设置<span style="color: #000000;">DB_FIELDS_CACHE 参数来关闭字段自动缓存，如果在开发的时候经常变动数据库的结构，而不希望进行数据表的字段缓存，可以在项目配置文件中增加如下配置：</span></p>
<p>&#8216;DB_FIELDS_CACHE&#8217;=&gt;false</p>
<p>至此这个问题可以得到解决，其实对于调试状态中，可以关掉此项。</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.phplook.com/php/36.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>js获取客户端ip</title>
		<link>http://www.phplook.com/javascript/32.html</link>
		<comments>http://www.phplook.com/javascript/32.html#comments</comments>
		<pubDate>Sat, 03 Mar 2012 16:22:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://www.phplook.com/?p=32</guid>
		<description><![CDATA[最近遇见一个‘很奇怪’的需求，客户要求不同地域的用户打开同一个url跳转到不同的网站。其实解决这个问题的方法很多，但最简单最通用的方法，就是用javascript获取用户地址。下面我介绍一下这种方法。 要用这种方法首先要找到一种能让js用的ip的接口，这里面放着判断用户ip归属地的信息，这种接口有很多，最常用的是： 新浪的IP地址查询接口：http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js 新浪多地域测试方法：http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&#38;ip=218.192.3.42 搜狐IP地址查询接口（默认GBK）：http://pv.sohu.com/cityjson 搜狐IP地址查询接口（可设置编码）：http://pv.sohu.com/cityjson?ie=utf-8 搜狐另外的IP地址查询接口：http://txt.go.sohu.com/ip/soip 腾讯的接口：http://fw.qq.com/ipaddress (腾讯的接口原本是最好用的，可现在打不开啦) 上面的接口中新浪的是js接口，所以我用此接口做一个简单的说明： //先引入接口 &#160; //引入的接口返回js数组 //var remote_ip_info = {“ret”:1,”start”:”218.192.0.0&#8243;,”end”:”218.192.7.255&#8243;,”country”:”\u4e2d\u56fd”,”province”:”\u5e7f\u4e1c”,”city”:”\u5e7f\u5dde”,”district”:”",”isp”:”\u6559\u80b2\u7f51&#8243;,”type”:”\u5b66\u6821&#8243;,”desc”:”\u5e7f\u5dde\u5927\u5b66\u7eba\u7ec7\u670d\u88c5\u5b66\u9662&#8243;}; //就是上面的结构 &#60;script src=”http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js” charset=”gb2312&#8243;&#62;&#60;/script&#62; &#60;script&#62;    alert（remote_ip_info ['city']）;//显示说在的城市 &#60;/script&#62; 就如上面所述，使用这些接口是非常方便的。 关于js获取ip的地域，在进行跳转，经常被用作搜索引擎推广是的作弊手段，希望大家能合理的应用这种方法。]]></description>
			<content:encoded><![CDATA[<p>最近遇见一个‘很奇怪’的需求，客户要求不同地域的用户打开同一个url跳转到不同的网站。其实解决这个问题的方法很多，但最简单最通用的方法，就是用<strong>javascript获取用户地址</strong>。下面我介绍一下这种方法。</p>
<p>要用这种方法首先要找到一种能让js用的ip的接口，这里面放着判断用户ip归属地的信息，这种接口有很多，最常用的是：</p>
<p>新浪的IP地址查询接口：<a href="http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js">http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js</a></p>
<p>新浪多地域测试方法：<a href="http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&amp;ip=218.192.3.42">http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&amp;ip=218.192.3.42</a></p>
<p>搜狐IP地址查询接口（默认GBK）：<a href="http://pv.sohu.com/cityjson ">http://pv.sohu.com/cityjson </a></p>
<p>搜狐IP地址查询接口（可设置编码）：<a href="http://pv.sohu.com/cityjson?ie=utf-8 ">http://pv.sohu.com/cityjson?ie=utf-8 </a></p>
<p>搜狐另外的IP地址查询接口：<a href="http://txt.go.sohu.com/ip/soip">http://txt.go.sohu.com/ip/soip</a></p>
<p>腾讯的接口：<a href="http://fw.qq.com/ipaddress" target="_blank">http://fw.qq.com/ipaddress</a> (腾讯的接口原本是最好用的，可现在打不开啦)</p>
<p>上面的接口中新浪的是js接口，所以我用此接口做一个简单的说明：</p>
<p>//先引入接口</p>
<p>&nbsp;</p>
<ol>
<li>//引入的接口返回js数组</li>
<li>//var remote_ip_info = {“ret”:1,”start”:”218.192.0.0&#8243;,”end”:”218.192.7.255&#8243;,”country”:”\u4e2d\u56fd”,”province”:”\u5e7f\u4e1c”,”city”:”\u5e7f\u5dde”,”district”:”",”isp”:”\u6559\u80b2\u7f51&#8243;,”type”:”\u5b66\u6821&#8243;,”desc”:”\u5e7f\u5dde\u5927\u5b66\u7eba\u7ec7\u670d\u88c5\u5b66\u9662&#8243;};</li>
<li>//就是上面的结构</li>
<li>&lt;script src=”http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js” charset=”gb2312&#8243;&gt;&lt;/script&gt;</li>
<li>&lt;script&gt;</li>
<li>   alert（remote_ip_info ['city']）;//显示说在的城市</li>
<li>&lt;/script&gt;</li>
</ol>
<p>就如上面所述，使用这些接口是非常方便的。</p>
<p>关于js获取ip的地域，在进行跳转，经常被用作搜索引擎推广是的作弊手段，希望大家能合理的应用这种方法。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.phplook.com/javascript/32.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>世界，你好！</title>
		<link>http://www.phplook.com/uncategorized/1.html</link>
		<comments>http://www.phplook.com/uncategorized/1.html#comments</comments>
		<pubDate>Mon, 26 Dec 2011 16:37:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://www.phplook.com/?p=1</guid>
		<description><![CDATA[今天博客正式开始，看见“世界，你好”，忽然感觉这是这四个字是程序员快乐和痛苦。仿佛是婴儿降生，在父母和医生的掌声里来到这个世界，眼球感受光明的瞬间，小脑袋浮现的也许正是向世界问好！而孩子的母亲在痛苦的分娩几近绝望的痛苦之后，听见清脆的哭声，身体的痛苦也瞬间化为无比的喜悦和新生感，不由的叹一声：“世界，你好！”。程序员创造程序就如母亲创造孩子，从第一行代码开始，我们就注定，要在痛苦之后的快感中感叹，世界，你好。 所以，我用世界你好为题，算是我生命中的又一个“世界，你好”。我们总是在不停的创造着这个世界所没有的东西，就像这个原本没有的博客。程序员需要不断的喊出世界你好，喊出的多少，就是你自己级数的高低。 我突然想像有无数的人都挤在我的空间入口，拿着大包小包的礼物，冲我拱手说道恭喜恭喜，恭喜我新宅落成。我也不由的开颜，拱手还礼，让进屋内。可这屋中有什么呢，要是家徒四壁、糟粕冷汤，不免扫兴。骂几句“骗子”，扬长而去。所以新屋即成，必须着手装饰，挂起名家字画，拥起万卷诗书，银杯玉盏，最好金屋藏娇。这样才可在恭喜恭喜之后，感到同喜同喜，自然以后就门庭若市。 现在我的新屋即成，我已喊出了又一个世界你好，接下来我要在这里echo出更多的世界你好。 程序员的价值在于创造，在于不停的喊出世界 你好  ，望来往诸君共勉，共勉！]]></description>
			<content:encoded><![CDATA[<p>今天博客正式开始，看见“世界，你好”，忽然感觉这是这四个字是程序员快乐和痛苦。仿佛是婴儿降生，在父母和医生的掌声里来到这个世界，眼球感受光明的瞬间，小脑袋浮现的也许正是向世界问好！而孩子的母亲在痛苦的分娩几近绝望的痛苦之后，听见清脆的哭声，身体的痛苦也瞬间化为无比的喜悦和新生感，不由的叹一声：“世界，你好！”。程序员创造程序就如母亲创造孩子，从第一行代码开始，我们就注定，要在痛苦之后的快感中感叹，世界，你好。</p>
<p>所以，我用世界你好为题，算是我生命中的又一个“世界，你好”。我们总是在不停的创造着这个世界所没有的东西，就像这个原本没有的博客。程序员需要不断的喊出世界你好，喊出的多少，就是你自己级数的高低。</p>
<p>我突然想像有无数的人都挤在我的空间入口，拿着大包小包的礼物，冲我拱手说道恭喜恭喜，恭喜我新宅落成。我也不由的开颜，拱手还礼，让进屋内。可这屋中有什么呢，要是家徒四壁、糟粕冷汤，不免扫兴。骂几句“骗子”，扬长而去。所以新屋即成，必须着手装饰，挂起名家字画，拥起万卷诗书，银杯玉盏，最好金屋藏娇。这样才可在恭喜恭喜之后，感到同喜同喜，自然以后就门庭若市。</p>
<p>现在我的新屋即成，我已喊出了又一个世界你好，接下来我要在这里echo出更多的世界你好。</p>
<p>程序员的价值在于创造，在于不停的喊出世界 你好  ，望来往诸君共勉，共勉！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.phplook.com/uncategorized/1.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

