function getFriendList($uid) {    
    $str_url = DEF_INTERFACE_FRIEND_LIST . '?cuid=' . $uid . '&uid=' . $uid . '&pagesize=1000' . '&info=0';

    $ch_curl = curl_init ();
    curl_setopt ( $ch_curl, CURLOPT_TIMEOUT, 3 );
    curl_setopt ( $ch_curl, CURLOPT_HEADER, false );
    curl_setopt ( $ch_curl, CURLOPT_HTTPGET, 1 );
    curl_setopt ( $ch_curl, CURLOPT_RETURNTRANSFER, true );
    curl_setopt ( $ch_curl, CURLOPT_URL, $str_url );

    $str_return = curl_exec ( $ch_curl );

    if ($str_return === false)
      return false;
    curl_close ( $ch_curl );
    $arr_return = json_decode ( $str_return, true );

    return $arr_return;
  }

curl_setopt函数相关参数介绍阅读全文
你还可以参考:http://www.ibm.com/developerworks/cn/opensource/os-php-smarty/
smarty函数库

什么是smarty及其安装

Smarty是一个php模板引擎,它分开了逻辑程序和外在的内容,提供了一种易于管理的方法.

Smarty要求web服务器运行php4.0.6和以上版本.

smarty安装需要smarty库文件。可以去官方网站[url]http://smarty.php.net[/url]下载。我下的是2.6.7版本的。

网上讲了很多安装的教程,但是我都没有成功,所以直接把整个目录名改为smarty直接复制到了网站所在的目录下,然后打开

http://网站路径/smarty/demo/index.php,显示正常,应该算是安装成功了。

基本语法

所有的smarty标签都被加上了定界符.在smarty里,所有定界符以外的内容都是静态的,当smarty遇到了模板标签,将尝试解释他们,然后再以恰当的方式输出.阅读全文

2007-08-09 10:06 刚找到LITERAL的一点东西跟大家分享一下:
Literal 标签区域内的数据将被当作文本处理,此时模板将忽略其内部的所有字符信息. 该特性用于显示有可能包含大括号等字符信息的 javascript 脚本. 当这些信息处于 {literal}{/literal} 标签中时,模板引擎将不分析它们,而直接显示.
例子:



php

php tags allow php to be embedded directly into the template. They will not be escaped, regardless of the $php_handling setting. This is for advanced users only, not normally needed.

php 标签允许在模板中直接嵌入 php 脚本. 是否处理这些语句取决于$php_handling的设置. 该语句通常不需要使用,当然如果你非常了解此特性或认为必须要用,也可以使用.

php 标签演示

这和定义的解散解析标签也有管,如:<{ }> ,得这样:
<p class="m30">
{if $$mytest[loop].ts|@count != 0}
参与过的好友:
{foreach from=$mytest[loop].ts item=ts}
<a href="?action=friendtest&uid={$ts.0}">{$ts.1}</a> &nbsp;&nbsp;
{/foreach}
{/if}
</p>
<p>
{if $mytest[loop].ta|@count != 0}
和我结果一样的好友:{foreach item=ta from=$mytest[loop].ta}
<a href="?action=friendtest&uid={$ta.0}">{$ta.1}</a> &nbsp;&nbsp;
{/foreach}
{/if}
</p>
背景:有时在上线时出现只需要导出线下包含某个部分的数据,和线上对接上即可,这儿可以用awk实现,当然是用mysqldump直接来实现来得快,但是要是真没有办法还得用脚本来实现,参看:http://jackxiang.com/post/2364/
一)mysqldump 可以导出where条件的sql出来,再source进去(-d -t是有区别的:-d:只是data建表结构,-t:table数据):
mysqldump -d newbbs > newbbs_table_structure_export_2018_06_14.sql  #只导出结构样例实践

实践情况如下:

Q1:
Warning: A partial dump from a server that has GTIDs will by default include the GTIDs of all transactions, even those that changed suppressed parts of the database. If you don't want to restore GTIDs, pass --set-gtid-purged=OFF. To make a complete dump, pass --all-databases --triggers --routines --events.
Q2:
mysqldump: Couldn't execute 'SET OPTION SQL_QUOTE_SHOW_CREATE=1': You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'OPTION SQL_QUOTE_SHOW_CREATE=1' at line 1 (1064)


——————
下面解决方法来源于网络,针对我的版本是mysql5.6,问题解决:
最后找到解决办法、用新安装的mysql绝对路径来实现备份。
参考:http://blog.sina.com.cn/s/blog_692778030101mycz.html

二)selected into可以有格式也有部分字段导出像:"",""...这样的,再通过load data infile 导入。
导出部分且有条件的SQL:

阅读全文
php 通过error_reporting(0);关闭错误提示!
error_reporting(E_ALL); //显示所有的错误讯息
error_reporting(E_ALL&~E_NOTICE) 这是什么意思,表示提示除去 E_NOTICE 之外的所有错误信息
error_reporting(0);//关闭全部!

你把php.ini中error_reporting这个参数设置为error_reporting=E_ERROR
只样就只会报告致命性错误了。
error_reporting可以设置的参数如下:

; 错误报告是位字段。可以将数字加起来得到想要的错误报告等级。
; E_ALL - 所有的错误和警告(不包括 E_STRICT)
; E_ERROR - 致命性的运行时错误
; E_WARNING - 运行时警告(非致命性错误)
; E_PARSE - 编译时解析错误
; E_NOTICE - 运行时提醒(这些经常是你代码中的bug引起的,也可能是有意的行为造成的。)
; E_STRICT - 编码标准化警告,允许PHP建议如何修改代码以确保最佳的互操作性向前兼容性。
; E_CORE_ERROR - PHP启动时初始化过程中的致命错误
; E_CORE_WARNING - PHP启动时初始化过程中的警告(非致命性错)
; E_COMPILE_ERROR - 编译时致命性错
; E_COMPILE_WARNING - 编译时警告(非致命性错)
; E_USER_ERROR - 用户自定义的错误消息
; E_USER_WARNING - 用户自定义的警告消息
; E_USER_NOTICE - 用户自定义的提醒消息
; 例子:
;error_reporting = E_ALL & ~E_NOTICE ; 显示所有的错误,除了提醒
;error_reporting = E_COMPILE_ERROR&#124;E_ERROR&#124;E_CORE_ERROR ; 仅显示错误

---------------------------------------------------------------------------------------------------------------------
使用error_reporting(0);关闭错误成功或失败的例子:
关闭php提示错误功能
在php.ini 中把display_errors改成
display_errors = OFF  
或在php文件前加入
error_reporting(0)  
1)使用error_reporting(0);失败的例子:
A文件代码:
<?  
error_reporting(0);  
echo 555  
echo 444;  
?>  
错误:
Parse error: parse error, expecting `','' or `';'' in E:\webphp\2.php on line 4
2)使用error_reporting(0);成功的例子:
a文件代码:
<?php  
error_reporting(0);  
include("b.php");  
?>  
b文件代码:
<?php  
echo 555  
echo 444;  
?>  

这是很多phper说用error_reporting(0)不起作用。第一个例子A.php里面有致命错误,导致不能执行,不能执行服务器则不知有这个功能,所以一样报错。
第二个例子中a.php成功执行,那么服务器知道有抑制错误功能,所以就算b.php有错误也抑制了。
ps:抑制不了mysql错误。

From:http://blog.csdn.net/heiyeshuwu/article/details/8024567





在写Php上传时,nginx上传模块nginx_upload_module时把文件移到自己想要的目录会用到:http://jackxiang.com/post/6221/
但后来根本不用这个,



--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2013-04-09:
Rango-韩天峰(3507499**)  17:40:30
现在PHP5.3提供了__DIR__常量了,以前还要写 dirname(__FILE__)
回忆未来-向东-Jàck(3726476**)  17:42:11
我是想获取一个变量里的dir,rango说的能使。?
Rango-韩天峰(3507499**)  17:42:22
能啊
这个只是字符串分析的函数,不会去读文件系统

我们知道PHP中提供了一个魔术常量(magic constant)__FILE__,用来指向当前执行的PHP脚本。但PHP没有直接提供该脚本所在目录的常量。也就是说如果我们要得到当前PHP脚本所在的目录,需要使用dirname()这个函数:

<?php

$dir = dirname(__FILE__);

?>

在PHP5.3中,增加了一个新的常量__DIR__,指向当前执行的PHP脚本所在的目录。

例如当前执行的PHP文件为 /www/website/index.php

则__FILE__等于'/www/website/index.php'

而__DIR__等于'/www/website'

现在我们要包含当前文件目录或子目录下的文件,可以直接使用:

<?php

require_once __DIR__ . '/path/to/test.inc.php';
?>

http://www.phpeye.com/article/view/id/149/


例子 1
<?php
print_r(pathinfo("/testweb/test.txt"));
?>
输出:
Array
(
[dirname] => /testweb
[basename] => test.txt
[extension] => txt
)
例子 2
<?php
print_r(pathinfo("/testweb/test.txt",PATHINFO_BASENAME));
?>
输出:
test.txt

在实际的运用中是这样的:

调试PHP输出:
Array
(
    [dirname] => /upload/video/user
    [basename] => .20130410223139569564.JPG
    [extension] => JPG
    [filename] => .20130410223139569564
)
jpg
输出完成 (耗时 0 秒) - 正常终止
———————————————————————————————————————————————————
再次使用的方法备案(找到以xx.php.mine结果的文件并且删除掉: rm -Rf /xxx/xx.*)Add By:2014-01-03:
<?php
for($i=1;$i<=5;$i++)
{
  $array_test_all = array("0"=>"test_array","1"=>"test_all");
  $arr_test[] = $array_test_all;
}
print_r($arr_test);
echo "________________________________________________________\n";

foreach($arr_test as $key=> $values)
{

  $arr_test[$key]['ts'][]="111";
}
print_r($arr_test);

?>

Array
(
    [0] => Array
        (
            [0] => test_array
            [1] => test_all
        )

    [1] => Array
        (
            [0] => test_array
            [1] => test_all
        )

    [2] => Array
        (
            [0] => test_array
            [1] => test_all
        )

    [3] => Array
        (
            [0] => test_array
            [1] => test_all
        )

    [4] => Array
        (
            [0] => test_array
            [1] => test_all
        )

)
________________________________________________________
Array
(
    [0] => Array
        (
            [0] => test_array
            [1] => test_all
            [ts] => Array
                (
                    [0] => 111
                )

        )

    [1] => Array
        (
            [0] => test_array
            [1] => test_all
            [ts] => Array
                (
                    [0] => 111
                )

        )

    [2] => Array
        (
            [0] => test_array
            [1] => test_all
            [ts] => Array
                (
                    [0] => 111
                )

        )

    [3] => Array
        (
            [0] => test_array
            [1] => test_all
            [ts] => Array
                (
                    [0] => 111
                )

        )

    [4] => Array
        (
            [0] => test_array
            [1] => test_all
            [ts] => Array
                (
                    [0] => 111
                )

        )

)

php

WEB2.0 jackxiang 2008-8-6 12:13
$uid='1';
$my_test=new  TestResult($uid,1,$page,$testlist,10,"SLAVE");
if(!$my_test)
{
  echo "数据库连接有问题!";
}
print_r($testlist);
foreach ($testlist as $values)
{
  $ts_id[]=$values['ts_id'];
}
$ts_id_list = implode(",", $ts_id);//用,好连起来
$obj_friend_test = new friend_test();
$arr_friend_list = $obj_friend_test ->getFriendList($uid , $ts_id_list);

foreach ($testlist as $key=> $values)
{
  $str_ts_id=$values['ts_id'];
  $arr_ts_one = $arr_friend_list['ts'][$str_ts_id];
  $All[$key][]=$values;
  $All[$key][]=$arr_ts_one;
  
  $str_ta_key=$values['ts_id']."-".$values['ta_id'];  
  $arr_ta_one = $arr_friend_list['ta'][$str_ta_key];
  $All[$key][]=$arr_ta_one;
  
}
在前台页面里面,从数据库中选择出来的数据表中文项目,有的是正确的编码显示,有的是错误的乱码,分析后知道,原因可能有3种:

1. mysql_server 的语言环境应该为zh_CN.GBK ,同时数据库的环境变量中要把各个数据库中的字符集设定为utf8;

2. 页面前台输出需要转码

3. 运行客户端的时候,没有设定utf8编码就把数据库表建立,使得数据库表中本身插入的就是乱码

我遇到的起初认为是1;最后发现是3

错误的原因:

正确的解决方法:

解决utf8字符集的问题

mysql -h127.0.0.1 -P3336 -uroot < initTables.sql
mysql -h127.0.0.1 -P3336 -uroot < initMacro.sql
mysql -h127.0.0.1 -P3336 -uroot < initUsers.sql
mysql -h127.0.0.1 -P3336 -uroot < initRoles.sql
mysql -h127.0.0.1 -P3336 -uroot

这样插入的表,本身就是乱码,显示到前台,当然也是乱码了

解决utf8字符集的问题
[aimm@aixuning MySQL]$ mysql --default-character-set=utf8 -h127.0.0.1 -P3336 -uroot < initTables.sql
[aimm@aixuning MySQL]$ mysql --default-character-set=utf8 -h127.0.0.1 -P3336 -uroot < initMacro.sql
[aimm@aixuning MySQL]$ mysql --default-character-set=utf8 -h127.0.0.1 -P3336 -uroot < initUsers.sql
[aimm@aixuning MySQL]$ mysql --default-character-set=utf8 -h127.0.0.1 -P3336 -uroot < initRoles.sql
[aimm@aixuning MySQL]$ mysql --default-character-set=utf8 -h127.0.0.1 -P3336 -uroot

首先应该在建表的时候指定该表是utf-8结构的,然后再进行设置char类型的。
当然你设定为binary的数据格式,不设置utf-8表结构也可以,但是在firefox会出现???你得用php的trim("")去掉???!!mysql5.X
新的空间没有phpMyAdmin,只好自己装一个。上传后不会配置,在网上搜索了一下方法,可是按照别人说的去配置后就会出现"#1045 - Access denied for user 'root'@'localhost' (using password: NO)"这样的情况,自己摸索一阵,于是发现正确进入phpMyAdmin的修改很简单:只需修改$cfg['blowfish_secret'] = '';
  
配置方法:
1、下载phpMyAdmin后,解压,把里面的config.sample.inc.php文件重命名为config.inc.php
2、修改config.inc.php:找到$cfg['blowfish_secret'] = '';在''间填入任意数字和字母就ok了,其他的什么也不用改。因为里面的注释已经说的很清楚了“这是需要cookie的认证加密密码,你必须填补这个cookie的认证!”

我是直接修改libraries目录下的config.default.php(我是在这儿配置数据库链接信息的):
libraries目录下修改: vi config.default.php,找到$cfg['blowfish_secret'] = '';在''间填入任意数字和字母就ok了!
  function getUicIcon($uid,&$uicicon,$size='180')
  {
     $tmpid = $uid%8 + 1;
     $uicicon = "http://portrait".$tmpid.".sinaimg.cn/".$uid."/space/".$size;
     return 1;
  }
getUicIcon(1261163301,$uicicon,180);
echo $uicicon."
";
getUicIcon(1290170007,$uicicon,180);
echo $uicicon;
?>
关于Notice: Undefined variable 的问题解决方法
0
修改
global.php
找到
//error_reporting(0);
修改为:
error_reporting(0);

在每个php头行加入也行。。。
如果有端口:
$dsn="mysql:host=".$this->db_host.";port=".$this->db_port.";dbname=".$this->db_name;

<?php
  $dsn = "mysql:host=localhost;dbname=DB_***2010_11";
  $db = new PDO($dsn, 'root', '*****');
  $db->query('set names utf8;'); //你可能会用到的utf-8,哈哈
  $rs = $db->query("SELECT * FROM Tbl_User_***");
  $result_arr = $rs->fetchAll();
  print_r($result_arr);
?>


常规传统链接方法:

<?php
    $mysql_server_name="10.44.202.1*7";
    $mysql_username="username";
    $mysql_password="PWD";
    $mysql_database="database_mysql";
    $conn=mysql_connect($mysql_server_name, $mysql_username,
                        $mysql_password);
    $strsql="select * from user";
    $result=mysql_db_query($mysql_database, $strsql, $conn);
    while($row=mysql_fetch_row($result)){//一定要循环,指针下移。
         print_r($row);
    }
?>

mysql_fetch_row()与mysql_fetch_array()的区别:
两个函数,返回的都是一个数组,区别就是第一个函数返回的数组是只包含值,我们只能$row[0],
$row[1],这样以数组下标来读取数据,而mysql_fetch_array()返回的数组既包含第一种,也包含键值
对的形式,我们可以这样读取数据,(假如数据库的字段是 username,passwd):
$row['username'], $row['passwd']
而且,如果用($row as $kay => $value)来操作的话,还以直接取得数据库的字段名称。
更主要的是mysqli是php5提供的新函数库,(i)表示改进,其执行速度更快.MysqlLi类库:


DROP TABLE IF EXISTS `userinfo`;
CREATE TABLE `userinfo` (
  `ID` smallint(8) NOT NULL,
  `Name` varchar(12) DEFAULT NULL,
  `Detail` text,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- ----------------------------
-- Records of userinfo
-- ----------------------------
INSERT INTO `userinfo` VALUES ('1', 'xiangdong', 'ackxiang');
INSERT INTO `userinfo` VALUES ('2', 'jiaxuan', 'k3s');


对比来自:http://www.jb51.net/article/37909.htm

<?php
  $dsn = "mysql:host=localhost;dbname=test_php_work";
  $db = new PDO($dsn, 'root', '');
  //$db->query('set names utf8;'); //你可能会用到的utf-8,哈哈
  //插入
  /*
  $count = $db->exec("insert into union_index set Tid='1234565788',Uid='666',Status='1'");
  echo $count;
  */
  //显示
  /*
  $rs = $db->query("SELECT * FROM union_index");
  $result_arr = $rs->fetchAll();
  print_r($result_arr);
  */
  //显示2
  
  $rs = $db->prepare("SELECT * FROM union_index");
  $rs->execute();
  while($row = $rs->fetch())
  {
    echo $row[Tid]."&nbsp;".$row[Uid]."&nbsp;".$row[Status]."<br>";
    //print_r($row);
  }
  
  //获取指定记录里一个字段
  /*
  $rs = $db->query("SELECT COUNT(*) FROM union_index");
  $col = $rs->fetchColumn();
  echo $col;
  */

?>


<?php
   error_reporting(E_ALL);
  $dsn = "mysql:host=localhost;dbname=test";
  $db = new PDO($dsn, 'root', '');  
  //$db->query('set names utf8;');
  $sql = "INSERT INTO `test`.`mytest` (`id` ,`uid` ,`rstatus` ,`content`) VALUES ('121', '2', '2', '我得天啊,乱码!')";
  $rs = $db->prepare($sql);
  $isrue = $rs->execute();
  //$db->query('set names utf8;');
  $sql = "select * from mytest";
  $rs = $db->prepare($sql);
  $rs->execute();
  while($row = $rs->fetch())
  {
    echo $row['uid']."&nbsp;".$row['rstatus']."&nbsp;".$row['content']."<br>";
    //print_r($row);
  }
?>


以上代码没有问题,但是查看mysql pdo中有如下问题:
当我使用PDO_MYSQL连上mysql以后,可以利用这个参数自动执行一些QUERY。最常见的使用场合是连接mysql使用utf-8字符集
      $db = new PDO("mysql:dbname=dbname", "user", "password",array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'"));

以上代码会在连上mysql之后马上执行sql::

set names 'utf-8';


show variables like "character_set%";
用来查看编码,不能动不动就搞set names 'utf8'!
字符集详情:http://dev.mysql.com/doc/refman/5.1/zh/charset.html





参考:
http://www.phpv.net/html/1579.html
http://www.phpchina.com/html/200611/n2844.html
http://www.diybl.com/course/4_webprogram/php/phpshil/200725/9799.html
注意:Index(Name,Age)表示在Name,Age两列上建立联合索引
ALTER TABLE tablename ADD INDEX(Tid,Uid);
由于索引对数据库的查询性能有着至关重要的影响,下面是我的一些总结和体会:

一个查询一次只能使用一个索引:select name from user where name='plantegg' and age>35 , 如果Index(name); Index(age)的话,MySQL查询优化器会自动选择一个索引来使用;
MySQL选择哪个索引,可以这样来看:mysql> show index from photo;
+-------+------------+------------------------+--------------+---------------+-----------+-------------+----------+--------+------+------------+---------+
| Table | Non_unique | Key_name               | Seq_in_index | Column_name   | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |
+-------+------------+------------------------+--------------+---------------+-----------+-------------+----------+--------+------+------------+---------+
| photo |          0 | PRIMARY                |            1 | photo_id      | A         |      237871 |     NULL | NULL   |      | BTREE      |         |
| photo |          1 | index_random           |            1 | random        | A         |      237871 |     NULL | NULL   | YES  | BTREE      |         |
| photo |          1 | FK_photo_profile_id    |            1 | profile_id    | A         |      237871 |     NULL | NULL   |      | BTREE      |         |
| photo |          1 | FK_photo_temp_photo_id |            1 | temp_photo_id | A         |      237871 |     NULL | NULL   | YES  | BTREE      |         |
| photo |          1 | FK_photo_album_id      |            1 | album_id      | A         |      237871 |     NULL | NULL   | YES  | BTREE      |         |
+-------+------------+------------------------+--------------+---------------+-----------+-------------+----------+--------+------+------------+---------+
Cardinality越大表示索引候选分得越细(默认都是BTree索引);
你也可以试试Force Index强制使用某个索引看看速度是不是MySQL是不是查询起来更快(如果真是这样的话你需要Analyze yourTable 了,MySQL重新计算你的Cardinality以帮助他正确地选择INDEX)
仔细分析Explain的结果:重点留意Extra,Key,Rows,Select_type的结果!
小心查询中的Group by 、order by之类的,基本上这样的查询在Explain的时候都会出现: Using where; Using temporary; Using filesort
联合索引要小心使用,Index(Name,Age)时,如果where name='pp' 能使用索引,where age=25时不能使用索引;where name='pp' and age>25 能使用索引;    where name ='pp'  order by  age  能使用索引;  where  name>'pp'  order by age  不能使用索引,但是 where  name>'pp'  order by name,age  能使用索引,请仔细留意差异  ;  order by name asc age desc 将不能使用索引!阅读全文
http://thinhunan.cnblogs.com/Files/thinhunan/prototype.rar
分页: 242/271 第一页 上页 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 下页 最后页 [ 显示模式: 摘要 | 列表 ]