php实现mysql数据库随机重排例子

 更新时间:2016年11月25日 17:05  点击:1825
这个例子是用于一个简单的应用开发了,意思就是把现在表中的所有数据我们随机读出来一次之后再进行随机保存到另一个表,从而达到了记录随机的功能。

程序代码

 代码如下 复制代码

<?
//数据库连接就不写在这里面了
$s = isset( $_GET['s'] )?$_GET['s']:0;
$e = isset( $_GET['e'])?$_GET['e']:50;
$count =85000;

if( $s < $count )
{
 $sql = "select * from 表前缀_info where isget =0 order by id desc limit $s,$e ";
 $query = mysql_query( $sql );
 while( $rs = mysql_fetch_array( $query ) )
 {
  $id = $rs['id'];
  $sss = $rs['sss'];
  $typeid = $rs['typeid'];
  $isget = $rs['isget'];
  $sql = "insert into 表前缀_info_bak (id,表前缀,typeid,isget) values('$id','$sss','$typeid','$isget')";
  mysql_query( $sql ) ;
  echo $sql;
  //exit;
  $sqlu = "update 表前缀_info set isget=1 where id =".$rs['id'];
  mysql_query( $sqlu );
 }
 echo '<meta http-equiv="refresh" content="0;url=rand.php?s='.($s+50).'&e=50">正在处理数据,当前为'.$s.'条......';
}
else
{
 echo '完成所有数据处理 <a href=rand.php>再随机排序一次</a>';
}
?>

SAE全称是Sina App Engine(简称SAE)是新浪研发中心推出的国内首个公有云计算平台,支持PHP,MySQL,Memcached,Mail,TaskQueue,RDC(关系型数据库集群)等服务,下面我们来看SAE的storage服务用法

今天终于弄懂了sae的storage怎么使用。

这里是sae的storage的概述地址:

http://sae.sina.com.cn/doc/php/storage.html。

因为sae不支持文件权限设置,所有的代码文件都是不可数的。但是sae提供了特别好的一个分布式文件存储服务,用来存放持久文件。其实就是用来存放网站的素材文件,如图片,文件等等的。

所以,当需要存储文件数据的时候,可以使用使用sae。

 

使用sae一共有两种方案。

官方提供的一种方案是:

使用官方的storage类,直接可以进行文件操作,如存放文件,删除文件,修改文件等等。

官方API文档地址:http://apidoc.sinaapp.com/sae/SaeStorage.html

 

还有一种方法是我在sae的应用商店看到的,里面有一个合成的wordpress for sae。

我们可以看到详细的代码,我现在将自己简单的测试代码贴到下面:(只为实现storage,不适用于开发场景)

 代码如下 复制代码
<html>
<body>
 
<form action="" method="post" enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file" />
<br />
<input type="submit" name="submit" value="Submit" />
</form>
 
</body>
</html>
 
<?php
 
$domain = "test";
$upload_dir = "saestor://" . $domain . "/qiao1/2/3/4/5/";
 
if(!is_dir($upload_dir))
{
 //mkdir($upload_dir , 0777);
}
 
if ($_FILES["file"]["error"] > 0)
  {
  echo "Error: " . $_FILES["file"]["error"] . "<br />";
  }
else
  {
  echo "Upload: " . $_FILES["file"]["name"] . "<br />";
  echo "Type: " . $_FILES["file"]["type"] . "<br />";
  echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
  echo "Stored in: " . $_FILES["file"]["tmp_name"];
 
  }
if(move_uploaded_file($_FILES["file"]["tmp_name"],$upload_dir . $_FILES["file"]['name']))
{
 echo 'ok';
}
 
 
//mkdir($upload_dir . 'qiao' , 0777);
 
?>

我们可以直接使用move_uploaded_file函数将临时文件上传。要注意的是第二个参数$upload_dir=”saestor://” . $domain . “/” . $dir。

其中,$domain就是storage中创建的storage服务名称。$dir就是要存放的目录。

如要将文件存放在saestor://mydomain/dir1/dir2/dir3/下。可以直接使用该url,而不需要使用mkdir函数进行创建,因为stotage已经将该目录自动进行了创建。

如果你只简单获取当前访问你页面的域名,我们只需要使用php中的函数HTTP_HOST就可以搞定了,如果是提取url根域名是需要正则的,下面看我整理的几个例子。

如果是获取当前域名是非常的简单的

 代码如下 复制代码

<?
//获取当前的域名:
echo $_SERVER['SERVER_NAME'];
//获取来源网址,即点击来到本页的上页网址
echo $_SERVER["HTTP_REFERER"];
$_SERVER['REQUEST_URI'];//获取当前域名的后缀
$_SERVER['HTTP_HOST'];//获取当前域名
dirname(__FILE__);//获取当前文件的物理路径
dirname(__FILE__)."/../";//获取当前文件的上一级物理路径
?>


例子1

 代码如下 复制代码

function getUrlRoot($url){

        #添加头部和尾巴
        $url = $url . "/";
        #判断域名
        preg_match("/((\w*):\/\/)?\w*\.?([\w|-]*\.(com.cn|net.cn|gov.cn|org.cn|com|net|cn|org|asia|tel|mobi|me|tv|biz|cc|name|info))
\//", $url, $ohurl);
        #判断IP
        if($ohurl[3] == ''){
                preg_match("/((\d+\.){3}\d+)\//", $url, $ohip);
                return $ohip[1];
        }
        return $ohurl[3];
}


例子2

 代码如下 复制代码

/**
 * 取得根域名
 * @param type $domain 域名
 * @return string 返回根域名
 */
function GetUrlToDomain($domain) {
    $re_domain = '';
    $domain_postfix_cn_array = array("com", "net", "org", "gov", "edu", "com.cn", "cn");
    $array_domain = explode(".", $domain);
    $array_num = count($array_domain) - 1;
    if ($array_domain[$array_num] == 'cn') {
        if (in_array($array_domain[$array_num - 1], $domain_postfix_cn_array)) {
            $re_domain = $array_domain[$array_num - 2] . "." . $array_domain[$array_num - 1] . "." . $array_domain[$array_num];
        } else {
            $re_domain = $array_domain[$array_num - 1] . "." . $array_domain[$array_num];
        }
    } else {
        $re_domain = $array_domain[$array_num - 1] . "." . $array_domain[$array_num];
    }
    return $re_domain;
}

在php中if Else 与Switch都是条件判断语句了,那么很多的新学php的朋友搞不清楚php中 if Else 与Switch区别在哪里,下面本文就重点介绍一下。

在网上找到一句:  switch比较if具有速度优势,一个是采取转移地址列表的方法;还有就是switch一般在松散的情况下也多不采取"比较-转移 "的方法,而是用dec(sub)-jz的指令对,后者不仅是指令的长度变短了,速度上也有优势

下面我们来验证一下吧

If…Else 语句
如果您希望在某个条件成立时执行一些代码,在条件不成立时执行另一些代码,请使用 if….else 语句。

语法

if (condition) //设置条件
  code to be executed if condition is true; //如果条件为真的代码被执行;
else
  code to be executed if condition is false;  //如果条件为假,代码被执行


实例1
如果当前日期是星期一,下面的代码将输出 “星期一快乐。”,否则会输出 “天天快乐。”:

 代码如下 复制代码
<?php
$d=date("D"); //变量d赋值
if($d=="Mon"){
 echo "星期一快乐!";
}else{
 echo "天天快乐!";
}
?>

实例2

如果d等于1时输出“数字1”,否则输出“数字不是1”

 代码如下 复制代码

<?php
$d=2; //变量d赋值
if($d==1){
 echo "数字1"; //变量d等于1时输出的值
}else{
 echo "数字不是1"; //不等于1时输出的值
}
?>

Switch 语句

语法

 代码如下 复制代码
switch (expression)
{
case label1:
  code to be executed if expression = label1;
  break; 
case label2:
  code to be executed if expression = label2;
  break;
default:
  code to be executed
  if expression is different
  from both label1 and label2;
}

实例

工作原理:

对表达式(通常是变量)进行一次计算
把表达式的值与结构中 case 的值进行比较
如果存在匹配,则执行与 case 关联的代码
代码执行后,break 语句阻止代码跳入下一个 case 中继续执行
如果没有 case 为真,则使用 default 语句

 代码如下 复制代码

<?php
switch ($x)
{
case 1:
  echo "Number 1";
  break;
case 2:
  echo "Number 2";
  break;
case 3:
  echo "Number 3";
  break;
default:
  echo "No number between 1 and 3";
}
?>

总结3点

1.PHP中有两个方法都是用于判断值是否满足条件,如果满足/不满足做出不同行为动作。
2.switch中的步长越短,效率越高,而if else 则更灵活,适合不只一个变量的比较。。
3.当被判断值为变量,ifelse的运行效率高于switch,ifelse贯彻一判到底的方针,会从第一个条件开始判断,直到最后一个else,所以学会使用switch有好处;

小编介绍过最多的就是魔术方法了,但很少介绍过魔术变量了,今天看到一站长分享了一篇php__FILE__,__CLASS__魔术变量使用方法了,下面我也加以处理与补充给各位介绍一下魔术变量用法。

今天看到一个魔术变量,是以前没见过的,__DIR__,我查了查,发现原来是php5.3新增的,顺便举几个例子,解释一下php的魔术变量


系统常量

__FILE__ 当前文件名
__LINE__ 当前行数
__FUNCTION__ 当前函数名
__CLASS__ 当前类名
__METHOD__ 当前对象的方法名

详细分析

1,__FILE__

文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。自 PHP 4.0.2 起,__FILE__ 总是包含一个绝对路径(如果是符号连接,则是解析后的绝对路径),而在此之前的版本有时会包含一个相对路径。 
PHP 常量dirname(__file__) 
__FILE__ :被称为PHP魔术常量,返回当前执行PHP脚本的完整路径和文件名,包含一个绝对路径 
1)dirname(__FILE__) 函数返回的是脚本所在在的路径。 更新网络 
比如文件 b.php 包含如下内容:  

 代码如下 复制代码
<?php  
$basedir = dirname(__FILE__);  
echo $basedir 
//将在页面打印出一个这个文件所在绝对路径! 
?>  

 
我做的测试得到结果: E:websiteothertestcms 
这个相当于, asp中的server.mappth的用法 
如果b.php被其他目录里的a.php文件require 或者 include 去引用的话。 变量$basedir 的内容还是b.php所在的那个文件夹的路径。 而不是变成a.php文件所在的目录。 
2)dirname(__FILE__) 一般会返回文件所的当前目录到系统根目录的一个目录结构。 
不会返回当前的文件名称。 dirname(__FILE__) 也可能返回一个 . (当前目录) [原因是 b.php 文件在 http.conf 或者 PHP 配置开发环境的默认WEB目录下

 

 代码如下 复制代码
<?php
/**
在你的公用的配置文件中,来设置你的根目录,这样就不用担心经常搬家了。
*/
define(‘ROOT_PATH’, dirname(__FILE__) . DIRECTORY_SEPARATOR);
echo ROOT_PATH;
echo “<br>”;
echo __FILE__;
echo “<br>”;
echo dirname(__FILE__);
echo “<br>”;
echo dirname(dirname(__FILE__));
?>

2,__LINE__

文件中的当前行号。这个变量在调试错误的时候,还是比较有作用的,其他的时候,没什么用处,纯属个人观点。

 代码如下 复制代码
<?php
echo __LINE__;  //显示,__LINE__所在的行号
?>

3,__CLASS__

类的名称,PHP5返回的结果是区分大小写的

 代码如下 复制代码
<?php
class base_class
{
function say_a()
{
echo “‘a’ – said the ” . __CLASS__ . “<br/>”;
}
function say_b()
{
echo “‘b’ – said the ” . get_class($this) . “<br/>”;
}
}
class derived_class extends base_class
{
function say_a()
{
parent::say_a();
echo “‘a’ – said the ” . __CLASS__ . “<br/>”;
}
function say_b()
{
parent::say_b();
echo “‘b’ – said the ” . get_class($this) . “<br/>”;
}
}
$obj_b = new derived_class();
$obj_b->say_a();
echo “<br/>”;
$obj_b->say_b();
?>
结果为:
‘a’ – said the base_class
‘a’ – said the derived_class
‘b’ – said the  derived_class
‘b’ – said the derived_class

有的时候,我们可以用get_class来代替__CLASS__

4,__FUNCTION__和__METHOD__

__FUNCTION__:函数名称,php5中返回的结果是区分大小写的
__METHOD__:方法中的函数名称,php5中返回的结果是区分大小写的

二个都是取得方法的名称,有什么不同呢?

 代码如下 复制代码
<?php
class test
{
function a()
{
echo __FUNCTION__;
echo “<br>”;
echo __METHOD__;
}
}
function good (){
echo __FUNCTION__;
echo “<br>”;
echo __METHOD__;
}
$test = new test();
$test->a();
echo “<br>”;
good();
?>
返回结果:
a
test::a
good
good

相对于孤立的函数来说,二个都可以取出函数名,没什么区别,如果是class中的方法时,__FUNCTION__只能取出class的方法名,而__METHOD__不光能取出方法名,还能取出class名

5,__DIR__

文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。它等价于 dirname(__FILE__)。除非是根目录,否则目录中名不包括末尾的斜杠。(PHP 5.3.0中新增)

如果在5.3以前的版本中想用__DIR__的话,可以这样

 代码如下 复制代码
<?php
if(!defined(‘__DIR__’)) {
$iPos = strrpos(__FILE__, “/”);
define(“__DIR__”, substr(__FILE__, 0, $iPos) . “/”);
}
?>

6,__NAMESPACE__

当前命名空间的名称(大小写敏感)。这个常量是在编译时定义的(PHP 5.3.0 新增)

7,__STATIC__

当你调用class的静态方法时,返回class名称,区分大小写。如果在继承中调用的话,不管在继承中有没有定义,都能返回继承的class名。

 代码如下 复制代码

<?php
//php5.3
class Model
{
public static function find()
{
echo __STATIC__;
}
}
class Product extends Model {}
class User extends Model {}
Product::find(); // “Product”
User::find(); // “User”
?>

补充:php中魔术方法

__construct() 当实例化一个对象的时候,这个对象的这个方法首先被调用。
__destruct() 当删除一个对象或对象操作终止的时候,调用该方法。
__get() 当试图读取一个并不存在的属性的时候被调用。
__set() 当试图向一个并不存在的属性写入值的时候被调用。
__call() 当试图调用一个对象并不存在的方法时,调用该方法。
__toString() 当打印一个对象的时候被调用
__clone() 当对象被克隆时,被调用
__isset()
__unset()
__autoload($classname)
__sleep()
__wakeup()

[!--infotagslink--]

相关文章

  • PHP 数据库缓存Memcache操作类

    操作类就是把一些常用的一系列的数据库或相关操作写在一个类中,这样调用时我们只要调用类文件,如果要执行相关操作就直接调用类文件中的方法函数就可以实现了,下面整理了...2016-11-25
  • C#连接SQL数据库和查询数据功能的操作技巧

    本文给大家分享C#连接SQL数据库和查询数据功能的操作技巧,本文通过图文并茂的形式给大家介绍的非常详细,需要的朋友参考下吧...2021-05-17
  • C#从数据库读取图片并保存的两种方法

    这篇文章主要介绍了C#从数据库读取图片并保存的方法,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下...2021-01-16
  • Intellij IDEA连接Navicat数据库的方法

    这篇文章主要介绍了Intellij IDEA连接Navicat数据库的方法,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借价值,需要的朋友可以参考下...2021-03-25
  • 在数据库里将毫秒转换成date格式的方法

    在开发过程中,我们经常会将日期时间的毫秒数存放到数据库,但是它对应的时间看起来就十分不方便,我们可以使用一些函数将毫秒转换成date格式。 一、 在MySQL中,有内置的函数from_unixtime()来做相应的转换,使用如下: 复制...2014-05-31
  • Linux下PHP安装curl扩展支持https例子

    安装curl扩展支持https是非常的重要现在许多的网站都使用了https了,下面我们来看一篇关于PHP安装curl扩展支持https例子吧。 问题: 线上运行的lamp服务器,默认yu...2016-11-25
  • C#操作本地文件及保存文件到数据库的基本方法总结

    C#使用System.IO中的文件操作方法在Windows系统中处理本地文件相当顺手,这里我们还总结了在Oracle中保存文件的方法,嗯,接下来就来看看整理的C#操作本地文件及保存文件到数据库的基本方法总结...2020-06-25
  • 如何解决局域网内mysql数据库连接慢

    通过内网连另外一台机器的mysql服务, 确发现速度N慢! 等了大约几十秒才等到提示输入密码。 但是ping mysql所在服务器却很快! 想到很久之前有过类似的经验, telnet等一些服务在连接请求的时候,会做一些反向域名解析(如果...2015-10-21
  • MySQL快速复制数据库数据表的方法

    某些时候,例如为了搭建一个测试环境,或者克隆一个网站,需要复制一个已存在的mysql数据库。使用以下方法,可以非常简单地实现。假设已经存在的数据库名字叫db1,想要复制一份,命名为newdb。步骤如下:1. 首先创建新的数据库newd...2015-10-21
  • mysqldump命令导入导出数据库方法与实例汇总

    mysqldump命令的用法1、导出所有库系统命令行mysqldump -uusername -ppassword --all-databases > all.sql 2、导入所有库mysql命令行mysql>source all.sql; 3、导出某些库系统命令行mysqldump -uusername -ppassword...2015-10-21
  • Mysql数据库错误代码中文详细说明

    1005:创建表失败1006:创建数据库失败1007:数据库已存在,创建数据库失败1008:数据库不存在,删除数据库失败1009:不能删除数据库文件导致删除数据库失败1010:不能删除数据目录导致删除数据库失败1011:删除数据库...2013-09-23
  • c#异步读取数据库与异步更新ui的代码实现

    这篇文章主要介绍了c#从数据库里取得数据并异步更新ui的方法,大家参考使用吧...2020-06-25
  • Yii2.0高级框架数据库增删改查的一些操作

    yii2.0框架是PHP开发的一个比较高效率的框架,集合了作者的大量心血,下面通过用户为例给大家详解yii2使用中的一些基本的增删改查操作。 User::find()->all(); //返回所有用户数据; User::findOne($id); //返回 主键...2015-11-24
  • MYSQL数据库使用UTF-8中文编码乱码的解决办法

    1.用phpmyadmin创建数据库和数据表 创建数据库的时候,请将“整理”设置为:“utf8_general_ci” 或执行语句: 复制代码 代码如下:CREATE DATABASE `dbname` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; 创...2015-10-21
  • springBoot 项目排除数据库启动方式

    这篇文章主要介绍了springBoot 项目排除数据库启动方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-10
  • Linux 下使用shell脚本定时维护数据库的案例

    这篇文章主要介绍了Linux 下使用shell脚本定时维护数据库,本文通过案例分析给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-07-11
  • PHP连接公司内部服务器的MYSQL数据库的简单实例

    “主机,用户名,密码”得到连接、“数据库,sql,连接”得到结果,最后是结果的处理显示。当然,数据库连接是扩展库为我们完成的,我们能做的仅仅是处理结果而已。...2013-09-29
  • C#连接加密的Sqlite数据库的方法

    对数据加密分两种,一种是对数据库本身进行加密,另一种是对数据表中的数据进行加密,下面通过本文给大家介绍C#连接加密的Sqlite数据库的方法,感兴趣的朋友一起看看吧...2020-06-25
  • node.js如何操作MySQL数据库

    这篇文章主要介绍了node.js如何操作MySQL数据库,帮助大家更好的进行web开发,感兴趣的朋友可以了解下...2020-10-29
  • Java连接数据库oracle中文乱码解决方案

    这篇文章主要介绍了Java连接数据库oracle中文乱码解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-05-16