尝试使用php脚本更新MySQL数据库(上传文件)

时间:2015-11-04 14:04:25

标签: php mysql

我正在尝试创建一个登录系统,用户可以在现有数据库中上传文件。首先要求用户登录然后上传文件。这是我的数据库: enter image description here

现在我想更新cv(blob)。 所以我创建了以下页面。

<!-- Script -->
<?php 
    if (isset($_POST['submit'])) {


    // make connection
        $conn = mysqli_connect('localhost','root','','users');


        // if fails show error
        if (!$conn) {
            die("Connection failed: " . mysqli_connect_error());
            echo "Error Connecting to DB";
        }


        $usrName = ($_POST['username']);
        $paswrd  = ($_POST['password']);

        if($usrName!='' && $paswrd!=''){

            $sql ="SELECT username, password FROM credentials WHERE username = '$usrName'"; 

            $result = mysqli_query($conn, $sql);

            $row = mysqli_fetch_row($result);
            $dbUsname = $row[0];
            $dbPassword = $row[1];

                if ($usrName == $dbUsname && $paswrd == $dbPassword) {
                    echo "Hello ".$usrName." upload your CV now <br>";

                    echo 

                    "<form method='POST' enctype='multipart/form-data'>
                    <input type = 'file' value= 'upload' name = 'file'>
                    <input type='submit' value='Upload' name='upload' /> <br>
                    </form>";



                    if(isset($_POST['upload'])){

                        $cv = mysqli_real_escape_string($conn, $_POST['file']);

                        mysql_query("UPDATE credentials SET cv=$cv  WHERE username=$usrName");

                        if (!mysqli_query($conn,$UpdateQuery)) {
                            die('Error: ' . mysqli_error($conn));
                        }

                    }



                }
                else{
                    echo "<h1>Incorrect Username and/or password!</h1>";
                }
        }else{
            echo "Please make sure username and password is not empty";
        }
    }
?>

以上是初始形式。然后我使用了以下脚本:

var myOpenWindow = window.open(...);

我已经测试了大部分脚本。我尝试更新cv文件时出现问题。在下面的代码。 enter image description here

脚本执行但我看不到我的数据库中上传的任何文件。 有人可以指出我在哪里犯错误。

2 个答案:

答案 0 :(得分:2)

首先,我们处理的是“文件”,而不是“文本”输入。

因此,您的代码的这部分$_POST['file']需要更改为$_FILES['file']

然而,这部分代码

mysql_query("UPDATE credentials SET cv=$cv  WHERE username=$usrName");
由于两个原因,你失败了。

你正在混合API,你需要引用字符串值,技术上需要读作:(参见我的旁注下方的代码行)。

旁注: mysqli_query如果您要使用您正在使用的条件语句if (!mysqli_query($conn,$UpdateQuery)),则不应包含在下方(仅在下方)。

mysqli_query($conn, "UPDATE credentials SET cv='$cv'  WHERE username='$usrName'");
  • 不同的MySQL API /函数不会混合。

您需要使用从连接到查询的相同内容。

然而,看到这一点,

if (!mysqli_query($conn,$UpdateQuery)) {
    die('Error: ' . mysqli_error($conn));
}

您可能忘记将$UpdateQuery变量添加到查询中,该变量应显示为

$UpdateQuery = "UPDATE credentials SET cv=`$cv`  WHERE username='$usrName'";

错误报告会向您抛出未定义的变量UpdateQuery通知。

旁注:确保允许文件大小。如果它太大,那么你需要增加它的值。

请参阅Stack上的以下帖子:

重写:

$cv = mysqli_real_escape_string($conn, $_FILES['file']);

    $UpdateQuery = "UPDATE credentials SET cv='$cv'  WHERE username='$usrName'";

    // or using '".XXX."' syntax. In rare cares, that makes a difference.
    // $UpdateQuery = "UPDATE credentials SET cv='".$cv."'  WHERE username='".$usrName."'";

    if (!mysqli_query($conn,$UpdateQuery)) {
        die('Error: ' . mysqli_error($conn));
    }

    else{
        echo "Success!";
        }

您也可以使用SQL注入。最好使用准备好的声明。

关于BLOB和TEXT类型的参考:

<强>密码

我还注意到您可能以纯文本格式存储密码。不建议这样做。

使用以下其中一项:

其他链接:

答案 1 :(得分:0)

当您发布上传表单时,更新查询将无法运行,因为它隐藏在if(isset($_POST['submit']))内。您需要在提交之外移动if(isset($_POST['upload']))才能使其正常工作。