首页 > 编程技术 > php

phpmyadmin只能导入2048kb .sql文件解决办法

发布时间:2016-11-25 15:47

我们使用phpmyadmin的朋友可能会碰到导入2048kb .sql文件了,大了就会提示No data was received to import. Either no file name was submitted、or the file size exceeded the maximum size permitted by your PHP 下在, 我来给大家介绍解决办法。

解决方法:

如果你有服务器管理权限,那自然是更好了,我们直接在php.ini下分别对 upload_max_filesize , memory_limit 和 post_max_size进入设置了。

如我的配置

upload_max_filesize = 1200M

memory_limit = 2048M

post_max_size = 1200M

然后重启apache或iis就可以了

如果你没有服务器管理权限,我们还有一个解决办法


phpMyAdmin-3.1.0-all-languages为例,我的安装目录E:/wwwroot/phpMyAdmin/

1.在 phpmyadmin目录里新建一个目录 upload.

2.打开phpmyadmin,找到E:/wwwroot/phpMyAdmin/config.sample.inc.php文件,找到并修改为 $cfg['UploadDir'] = “upload”; 然后点保存.
再打开E:/wwwroot/phpMyAdmin/libraries/config.default.php文件,找到并修改为 $cfg['UploadDir'] = “upload”; 然后点保存.

3.用 FTP 上传 需要导入的sql 文件到 phpmyadmin/upload/ 下

4.访问 phpmyadmin,点击 Import(导入) ,就会出现选择服务器上的文件的下拉框,选择刚才用FTP上传的SQL文件。至此完美解决。

在php中如果要实现下载如图片文件,php文件,html文件这些文件我们如果在网站上点击都是直接打开了,如果要实现下载我们可以利用php header函数来操作,下面我来介绍利用php header函数实现文件下载的实例,有需要的朋友可参考。

例1

 代码如下 复制代码

function download($file_url,$new_name=''){
 if(!isset($file_url) || trim($file_url)==''){
  return '500';
 }
 if(!file_exists($file_url)) { //检查文件是否存在
  return '404';
 }
 $file_name=basename($file_url);
 $file_type=explode('.',$file_url);
 $file_type=$file_type[count($file_type)-1];
 $file_name=trim($new_name=='')?$file_name:urlencode($new_name).'.'.$file_type;
 $file_type=fopen($file_url,'r'); //打开文件
 //输入文件标签
 header("Content-type: application/octet-stream");
 header("Accept-Ranges: bytes");
 header("Accept-Length: ".filesize($file_url));
 header("Content-Disposition: attachment; filename=".$file_name);
 //输出文件内容
 echo fread($file_type,filesize($file_url));
 fclose($file_type);
}

例2

以下php代码可以解决:
 

 代码如下 复制代码
<?
if( empty($_GET['FileName'])|| empty($_GET['FileDir'])|| empty($_GET['FileId'])){
    echo'<script> alert("非法连接 !"); location.replace ("index.php") </script>'; exit();
}
$file_name=$_GET['FileName'];
$file_dir=$_GET['FileDir'];
$FileId=$_GET['FileId'];
$file_dir = $file_dir."/";
if   (!file_exists($file_dir.$file_name))   {   //检查文件是否存在 
  echo   "文件找不到"; 
  exit;   
  }   else   { 
$file = fopen($file_dir . $file_name,"r"); // 打开文件
// 输入文件标签
Header("Content-type: application/octet-stream");
Header("Accept-Ranges: bytes");
Header("Accept-Length: ".filesize($file_dir . $file_name));
Header("Content-Disposition: attachment; filename=" . $file_name);
// 输出文件内容
echo fread($file,filesize($file_dir . $file_name));
fclose($file);
exit();
}
?>

直接下载文件

 代码如下 复制代码
<?php  
$file = get_file_address();// 文件的真实地址(支持url,不过不建议用url)  
 
if (file_exists($file)) {  
    header('Content-Description: File Transfer');  
    header('Content-Type: application/octet-stream');  
    header('Content-Disposition: attachment; filename='.basename($file));  
    header('Content-Transfer-Encoding: binary');  
    header('Expires: 0');  
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');  
    header('Pragma: public');  
    header('Content-Length: ' . filesize($file));  
    ob_clean();  
    flush();  
    readfile($file);  
    exit;  
}  
?>

小提示,header函数不只是可以实现文件下载,他还有很多的功能哦,如发送404,301等等状态信息都是可以的哦。

注意:在使用header之前我们必须在header之前没有任何输出,否则就会报错。

this,parent,self都是在php中的class类中了,下面我来分别介绍this,parent,self在类中用应用与区别有需要的朋友可参考。

一,this

1,要用this,你必有是一个对像的形势,不然它会报错的,Fatal error: Using $this when not in object context。

2,this可以调用本类中的方法和属性,也可以调用父类中的可以调的方法和属性

 代码如下 复制代码

< ?php   
class UserName  
{   
//定义属性   
private $name;  
//定义构造函数  
function __construct( $name )  
{  
$this->name = $name;
//这里已经使用了this指针  
}  
//析构函数  
function __destruct(){}   
//打印用户名成员函数  
function printName()  
{  
print( $this->name );
//又使用了PHP关键字this指针  
}  
}   
//实例化对象  
$nameObject = new UserName
( "heiyeluren" );   
//执行打印  
$nameObject->printName();
 //输出: heiyeluren  
//第二次实例化对象  
$nameObject2 = new UserName( "PHP5" );  
//执行打印  
$nameObject2->printName(); //输出:PHP5  
?> 

我 们看,上面的类分别在11行和20行使用了this指针,那么当时this是指向谁呢?其实this是在实例化的时候来确定指向谁,比如第一次实例化对象 的时候(25行),那么当时this就是指向$nameObject对象,那么执行18行的打印的时候就把print( $this-><name )变成了print( $nameObject->name ),那么当然就输出了"heiyeluren"。


二,self

self是指向类本身,也就是PHP self关键字是不指向任何已经实例化的对象,一般self使用来指向类中的静态变量。
1,self可以访问本类中的静态属性和静态方法,可以访问父类中的静态属性和静态方法。
2,用self时,可以不用实例化的

 代码如下 复制代码

< ?php  
class Counter  
{  
//定义属性,包括一个静态变量  
private static $firstCount = 0;  
private $lastCount;  
//构造函数  
function __construct()  
{  
$this->lastCount = ++selft
::$firstCount;
 //使用PHP self关键字来调用静态变量,使用self
调用必须使用::(域运算符号)  
}  
//打印最次数值  
function printLastCount()  
{  
print( $this->lastCount );  
}   
}  
//实例化对象  
$countObject = new Counter();  
$countObject->printLastCount();
 //输出 1  
?> 

三,parent

parent:: 可用于调用父类中定义的成员方法。
parent::的追溯不仅于直接父类。
通过parent::调用父类方法

 代码如下 复制代码

<!-- 声明一个员工类,经理类继承自员工类 -->
<?
class employee{
 protected  $sal=3000;  
 public function getSal(){
  $this->sal = $this->sal + 1200;  
  return $this->sal ;
 } 
}

class Manager extends employee {
 //如果想让经理在员工工资的基础上多发1500元.
 //必须先调用父类的getSal()方法.
 public function getSal(){  
  parent::getSal();// 这里调用了父类的方法.
  $this->sal = $this->sal + 1500;  
  return $this->sal ;
 } 
}
$emp = new employee();
echo "普通员工的工资是 " . $emp->getSal();
echo "<br>";

$manager = new Manager();
echo "经理的工资是: " . $manager->getSal();
?>

parent是指向父类的指针,一般我们使用parent来调用父类的构造函数。

在php中我们如果要上传到另一台服务器就需要利用php一个ftp功能,在php中提供了 ftp_connect来连接服务器,然后把我们上传的数据传到远程服务器哦,下面我来给各位朋友介绍。

ftp_connect() 函数建立一个新的 FTP 连接。

若成功,则返回一个连接标识,否则返回 false。

语法


host 必需。规定要连接的 FTP 服务器。可以是域名或 IP 地址。
后面不应以斜线结尾,前面也不需要用 ftp:// 开头。
 
port 可选。规定 FTP 服务器的端口。

timeout 可选。规定该 FTP 服务器的超时时间。默认是 90 秒。


然后在台式机本地做了个测试:

 代码如下 复制代码
$ftp_server = "192.168.1.100";
$ftp_user_name = "laohu";
$ftp_user_pass = "123456";
$conn_id = ftp_connect($ftp_server) or die("Couldn't connect to $ftp_server");
$file = 'test.txt';
$remote_file = '/test/a.txt';

// 注意:这里的"/test"指的是ftp根目录下的test文件夹,而非系统跟目录下的

test

 代码如下 复制代码

$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

if (ftp_put($conn_id, $remote_file, $file, FTP_BINARY)) {
  echo "文件移动成功";
} else {
  echo "移动失败";
}
ftp_close($conn_id);

运行后:文件移动成功。

要的就是这个效果了,之后用台式机做程序服务器,上传附件时全用ftp方法上传至笔记本上,笔记本ip是105,相

应代码如下:

 代码如下 复制代码

if (is_uploaded_file($_FILES['uploadfile']['tmp_name'])) {
  $ftp_server = "192.168.1.105";
  $ftp_user_name = "lesley";
  $ftp_user_pass = "123456";
  $conn_id = ftp_connect($ftp_server) or die("Couldn't connect to $ftp_server");
  $file = $_FILES['uploadfile']['tmp_name'];
  $remote_file = '/test/'.$_FILES['uploadfile']['name'];
  $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

  if (ftp_put($conn_id, $remote_file, $file, FTP_BINARY)) {
    echo "文件:".$_FILES['uploadfile']['name']."上传成功";
  } else {
    echo "上传失败";
  }
  ftp_close($conn_id);
}

对应的前台页面代码:

 代码如下 复制代码

<form action="uploadfile.php" method="post" enctype="multipart/form-data">
  <input type="file" name="uploadfile" id="uploadfile" />
  <input type="submit" name="submit" value="submit" />
</form>

运行后确实成功。

下面看一个ftp文件上传类

 代码如下 复制代码

<?php 
/**
* desc:FTP类
* link:www.111cn.net
* date:2013/02/24
*/ 
class ftp 

public $off;  // 返回操作状态(成功/失败) 
public $conn_id;  // FTP连接 
 
/**
* 方法:FTP连接
* @FTP_HOST -- FTP主机
* @FTP_PORT -- 端口
* @FTP_USER -- 用户名
* @FTP_PASS -- 密码
*/ 
function __construct($FTP_HOST,$FTP_PORT,$FTP_USER,$FTP_PASS) 

$this->conn_id = @ftp_connect($FTP_HOST,$FTP_PORT) or die("FTP服务器连接失败"); 
@ftp_login($this->conn_id,$FTP_USER,$FTP_PASS) or die("FTP服务器登陆失败"); 
@ftp_pasv($this->conn_id,1); // 打开被动模拟 

 
/**
* 方法:上传文件
* @path-- 本地路径
* @newpath -- 上传路径
* @type-- 若目标目录不存在则新建
*/ 
function up_file($path,$newpath,$type=true) 

if($type) $this->dir_mkdirs($newpath); 
$this->off = @ftp_put($this->conn_id,$newpath,$path,FTP_BINARY); 
if(!$this->off) echo "文件上传失败,请检查权限及路径是否正确!"; 

 
/**
* 方法:移动文件
* @path-- 原路径
* @newpath -- 新路径
* @type-- 若目标目录不存在则新建
*/ 
function move_file($path,$newpath,$type=true) 

if($type) $this->dir_mkdirs($newpath); 
$this->off = @ftp_rename($this->conn_id,$path,$newpath); 
if(!$this->off) echo "文件移动失败,请检查权限及原路径是否正确!"; 

 
/**
* 方法:复制文件
* 说明:由于FTP无复制命令,本方法变通操作为:下载后再上传到新的路径
* @path-- 原路径
* @newpath -- 新路径
* @type-- 若目标目录不存在则新建
*/ 
function copy_file($path,$newpath,$type=true) 

$downpath = "c:/tmp.dat"; 
$this->off = @ftp_get($this->conn_id,$downpath,$path,FTP_BINARY);// 下载 
if(!$this->off) echo "文件复制失败,请检查权限及原路径是否正确!"; 
$this->up_file($downpath,$newpath,$type); 

 
/**
* 方法:删除文件
* @path -- 路径
*/ 
function del_file($path) 

$this->off = @ftp_delete($this->conn_id,$path); 
if(!$this->off) echo "文件删除失败,请检查权限及路径是否正确!"; 

 
/**
* 方法:生成目录
* @path -- 路径
*/ 
function dir_mkdirs($path) 

$path_arr  = explode('/',$path);  // 取目录数组 
$file_name = array_pop($path_arr);// 弹出文件名 
$path_div  = count($path_arr);// 取层数 
 
foreach($path_arr as $val)// 创建目录 

if(@ftp_chdir($this->conn_id,$val) == FALSE) 

$tmp = @ftp_mkdir($this->conn_id,$val); 
if($tmp == FALSE) 

echo "目录创建失败,请检查权限及路径是否正确!"; 
exit; 

@ftp_chdir($this->conn_id,$val); 


 
for($i=1;$i<=$path_div;$i++)  // 回退到根 

@ftp_cdup($this->conn_id); 


 
/**
* 方法:关闭FTP连接
*/ 
function close() 

@ftp_close($this->conn_id); 


// class class_ftp end
?>

调用代码

 代码如下 复制代码

<?
/***
* desc:调用示例
* link:www.111cn.net
* date:2013/2/24
*/
$ftp = new ftp('192.168.0.249',21,'hlj','123456');  // 打开FTP连接
$ftp->up_file('aa.wav','test/13548957217/bb.wav'); // 上传文件
//$ftp->move_file('aaa/aaa.php','aaa.php');// 移动文件
//$ftp->copy_file('aaa.php','aaa/aaa.php');// 复制文件
//$ftp->del_file('aaa.php');   // 删除文件
$ftp->close(); // 关闭FTP连接
?>

需要注意,在用ftp_put方法时,第四个参数传送模式,需要用FTP_BINARY(二进制模式),用FTP_ASCII(文本模式)

时,图片能上传但无法显示,其他文件重命名、中文乱码解决、上传权限控制等,就不在此提及了。

在php中要保留两位小数的方法有很多种办法,有如:sprintf,substr,number_format,round等等方法,下面我来给大家介绍介绍。

方法一

sprintf()函数 ,sprintf() 函数把格式化的字符串写写入一个变量中

 代码如下 复制代码

$num = 123213.666666; 
echo sprintf("%.2f", $num); 

例2

 代码如下 复制代码

<?php
$number = 123;
$txt = sprintf("%f",$number);
echo $txt;
?>

输出:

123.000000

方法二 substr()函数

 代码如下 复制代码

$num = 123213.666666; 
echo sprintf("%.2f",substr(sprintf("%.3f", $num), 0, -2)); 

方法三 number_format()函数

 代码如下 复制代码


$number = 1234.5678;
$nombre_format_francais = number_format($number, 2, ',', ' '); // 1234,57
$english_format_number = number_format($number, 2, '.', '');   // 1234.57(我一般用这个)

方法四

round 函数,round() 函数对浮点数进行四舍五入。

例子

 代码如下 复制代码

<?php
echo(round(0.60));
echo(round(0.50));
echo(round(0.49));
echo(round(-4.40));
echo(round(-4.60));
?>

输出:

1
1
0
-4
-5

如果要保留小数,后来参数根保留小数位数即可。

 代码如下 复制代码

$number = 1234.5678;
echo round($number ,2); //1234.57

标签:[!--infotagslink--]

您可能感兴趣的文章: