PHP多个文件上传多个输入

时间:2015-04-20 14:47:49

标签: php mysql forms file-upload input

我是PHP的新手。现在我有文件上传的问题。 所有文件都被移动,但它没有将文件的名称存储到数据库中。 并没有显示错误。我不知道要解决这个问题。请帮帮我。

<form method="post" action="index.php?insert_ads" enctype="multipart/form-data">
    <input type="file" name="b1" id="b1"/>

    <b>Link</b></br>
    <input type="text" id="b1l" name="b1l" class="form-control"/></br>

    <b>Home Small</b> <b style="color: blue;">100 x 100 px</b></br>
    <input type="userfile" name="b2" id="b2"/><br>

    <b>Link</b></br>
    <input type="text" id="b2l" name="b2l" class="form-control"/></br>

    <input type="submit" name="submit" value="Publish"/>

</form></br>

<?php 

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

    $b1 = $_FILES['b1']['name'];
    $tmp1 = $_FILES['b1']['tmp_name']; 
    $b1l = $_POST['b1l'];
    $b2 = $_FILES['b2']['name'];
    $tmp2 = $_FILES['b2']['tmp_name'];
    $b2l = $_POST['b2l'];

    move_uploaded_file($tmp1,"ads/$b1");
    move_uploaded_file($tmp2,"ads/$b2");

    $insert_posts = "insert into ads (b1,b2) value ('$b1','$b2')";
    $run_posts = mysql_query($insert_posts);
}
?>

1 个答案:

答案 0 :(得分:0)

尽管使用mysql_query或注入攻击存在任何问题,但仍有许多问题可能会出错。

一个选项是查询正在执行,但您尚未正确分配$b1$b2个变量。如果将行添加到数据库,但行是空的(例如,SELECT b1, b2 FROM db.ads“返回'',''行),则会出现这种情况;在这种情况下,您可能只是没有提取来自$ _FILES变量的name属性正确。您可以运行var_dump($_FILES);以查看有关它的更多信息,并找出需要获取的内容。

另一种可能性是查询未执行。同样,这可能有几个原因 - 可能(不知何故)它没有达到代码中的那一点。您可以这样测试:

$insert_posts = "insert into ads (b1,b2) value ('$b1','$b2')";
echo $insert_posts; // if this shows up, you're running the next line also
$run_posts = mysql_query($insert_posts);

另一个选择是您的error reporting级别没有捕获错误。可能的原因是您没有连接到数据库 - 根据mysql_query文档......

  

如果未找到或建立连接,则会生成E_WARNING级别错误。

E_WARNING级别错误将允许程序继续执行,除非您已将程序配置为表现不同。

最后,您可能会遇到语法错误(事实上您似乎也是这样 - VALUES,而不是VALUE);根据文档,mysql_query在出错时返回false - 它不会引发错误。

您可以通过测试false并使用mysql_error函数来获取错误来实现此目的:

$run_posts = mysql_query($insert_posts);
if ($run_posts === false) { 
  trigger_error("Error in SQL!\n" + mysql_error(), E_USER_ERROR); 
}