这个Switch语句如何知道要执行哪种情况? (PHP / MySQL的)

时间:2010-04-04 02:11:56

标签: php mysql

这是我正在阅读的PHP + MySQL书籍的代码,我无法理解这段代码。此代码用于检查上载到数据库中的文件。 (请原谅任何拼写错误,如果有的话,我正在输入)

Q1:它如何知道要回应哪种情况?在整个代码中,没有提到每种情况。

Q2:为什么他们会跳过案例5?!或者使用哪个数字无关紧要(所以我可以有案例1,案例18,案例2?)

对于这个陈述,你能说if($ _ FILES ['userfile'] ['error'] = 1)而不是> 0?它们是一样的吗?

    if($_FILES['userfile']['error']>0)
{
    echo 'Problem: ';
switch($_FILES['userfile']['error'])
{
    case 1: echo 'File exceeded upload_max_filesize';
            break;
    case 2: echo 'File exceeded max_file_size';
            break;
    case 3: echo 'File only partially uploaded';
            break;
    case 4: echo 'No file uploaded';
            break;
    case 6: echo 'Cannot upload file: no temp directory specified';
            break;
    case 7: echo 'Upload failed: Cannot write to disk';
            break;
}
exit;
}

3 个答案:

答案 0 :(得分:2)

This should help

  

UPLOAD_ERR_OK值:0 ;没有   错误,文件上传成功。

     

UPLOAD_ERR_INI_SIZE值:1 ;该   上传的文件超过了   upload_max_filesize指令   php.ini中。

     

UPLOAD_ERR_FORM_SIZE值:2 ;该   上传的文件超过了   那是MAX_FILE_SIZE指令   在HTML表单中指定。

     

UPLOAD_ERR_PARTIAL价值:3 ;该   上传的文件只是部分   上传。

     

UPLOAD_ERR_NO_FILE价值:4 ;没有文件   已上传。

     

UPLOAD_ERR_NO_TMP_DIR值:6 ;   缺少临时文件夹。介绍   在PHP 4.3.10和PHP 5.0.3中。

     

UPLOAD_ERR_CANT_WRITE价值:7 ;失败   将文件写入磁盘。介绍   PHP 5.1.0。

     

UPLOAD_ERR_EXTENSION价值:8 ;一个PHP   扩展程序停止了文件上传。 PHP   没有提供确定的方法   哪个扩展名导致文件上传   停止;检查已加载的列表   使用phpinfo()扩展可能会有所帮助。   在PHP 5.2.0中引入。

它的要点是,当您处理上传的文件时,检查错误值($_FILES['userfile']['error'])以查看文件的状态。 switch语句通过检查可能存在的错误代码来分解它。这些基本上都是“硬连线”。

答案 1 :(得分:2)

文件上传的所有错误情况都是在PHP中预定义的。你可以在这里看到它们的含义: http://php.net/manual/en/features.file-upload.errors.php

答案 2 :(得分:0)

$ _ FILES ['userfile'] ['error']只是一个数字。 switch语句转到与该数字匹配的case。所以它就像if(...){goto ...;}语句的大列表。我猜案例5要么永远不会发生,要么无所谓。