0

我的 php 代码有问题。我正在尝试使用表单将数据写入 mysql。该表单还包含一个视频上传,它将视频存储在本地并将视频的 url 存储到数据库中。问题是当我测试它时,它会出现多个“videoname”、“videoupload”、“videodescription”的未定义索引错误。有趣的是,如果我没有选择要上传的文件并且仍然在其他字段中输入内容,它会将信息写入数据库并且不会出现错误。所以这与视频有关。有人知道它可能是什么吗?谢谢!表格代码:

<form action="videoUpload.php" id="videoUp" method='POST' enctype="multipart/form-data">
        <p>Name:<textarea name="videoname" value="" class="name" ></textarea></p>
        <p>Upload video:<input type="hidden" name="MAX_FILE_SIZE" value="10485760">   <input type="file" name="videoupload"> </p>
        <p>Video Description:<textarea name="videodescription" value="" class="step" ></textarea></p>
        <p><input type="submit" name="videosubmit" value="Submit Video" class="submit" /></p>
    </form>

和 php:

 <?php  
    session_start();

    //This is the directory where images will be saved
    $target = "assets/video/";
    $target = $target . basename( $_FILES['videoupload']['name']);

    $name = $_POST['videoname'];
    $description = $_POST['videodescription'];


    $connect = mysql_connect("localhost","root","") or die("Couldn't connect");
    mysql_select_db("fyp") or die("Couldn't find db");

    $queryreg = mysql_query("INSERT INTO videos(VideoName,VideoLocation,VideoDescription) VALUES('$name','$target','$description')");

    //Writes the photo to the server
    if(move_uploaded_file($_FILES['videoupload']['tmp_name'], $target))
    {

        //Tells you if its all ok
        echo "The file  has been uploaded, and your information has been added to the directory";
    }
    else {

    //Gives and error if its not
    echo "Sorry, there was a problem uploading your file.";
}
?>
4

1 回答 1

3

首先,检查文件上传的错误代码:

$_FILES['videoupload']['error']

然后为错误和成功场景编写代码。

关于未定义索引的错误只是告诉您您尝试访问的 POST 值未定义。一定有什么问题<form>。使用您喜欢的浏览器或Fiddler的开发者工具来分析实际的 HTTP 请求并确保值被传递。

将行插入表中这一事实没有什么好笑的:没有对实际值进行验证。无论是否声明变量,都会执行查询。未分配的变量不会导致 PHP 中的错误。

一般来说,您的代码在各个地方都缺乏验证:

  • 无输入验证
  • 没有验证的返回值mysql_query()
  • 对 SQL 注入开放
于 2012-05-24T23:47:58.283 回答