【发布时间】:2015-06-27 08:54:58
【问题描述】:
我是 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);
}
?>
【问题讨论】:
-
您很容易受到sql injection attacks 的攻击,您的数据库调用绝对有NO 错误处理。您对上传的内容绝对没有错误检查。在这两种情况下,您都只是假设不会出错,这是非常非常非常糟糕的编码实践。永远不要假设成功。假设失败,检查失败,并将成功视为惊喜。
-
警告:如果您只是学习 PHP,请不要学习过时的
mysql_query接口。这很糟糕,并且在 PHP 的未来版本中被删除。像PDO is not hard to learn 这样的现代替代品。像PHP The Right Way 这样的指南可以帮助解释最佳实践。始终绝对确定您的用户参数是properly escaped,否则您将遇到严重的SQL injection bugs。 -
你有连接数据库的代码吗?也可以放在这里吗?您的桌面广告在 DB 中的外观如何?
-
你有一个错字。在查询中使用
valueS。$insert_posts = "INSERT INTO ads (b1,b2) VALUES ('$b1','$b2')"; -
感谢您提供的所有信息:D 现在可以使用了
标签: php mysql forms file-upload input