【发布时间】:2013-12-06 04:59:02
【问题描述】:
它是一个简单的代码。每次上传文件时,我都想在数据库中保留记录。当每次上传任何文件时,我希望用户从数据库中看到他/她所有上传的文件。上传文件时的记录保存工作正常。但是在获取包含所有上传文件信息的表时出现问题。
//connetion code
$con = mysqli_connect("localhost", "root", "", "sss");
if (mysqli_connect_errno())
{
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
//file upload code
move_uploaded_file($_FILES["file"]["tmp_name"],"C:/xampp/htdocs/" . $_FILES["file"]["name"]);
mysqli_query($con, "INSERT INTO uploads ( filename, uploaded_on) VALUES ( '{$_FILES['file']['name']}', NOW());");
echo "Stored in: " . "C:/xampp/htdocs/" . $_FILES["file"]["name"];
//fetch rows
$result =mysqli_query($con, "select * from uploads");
while ($row = mysqli_fetch_array($result))
{
printf ("%s\n", $row);
}
mysqli_close($con);
}
我能感觉到编码中有一些严重的问题。这是我第一次在 mysqli 工作,之前我使用 mysql 进行编码。需要帮助才能了解实际问题和解决方案。
已编辑: 它返回这个,
Notice: Array to string conversion in C:\xampp\htdocs\sss\upload_file.php on line 68
Array
Notice: Array to string conversion in C:\xampp\htdocs\sss\upload_file.php on line 68
Array
Notice: Array to string conversion in C:\xampp\htdocs\sss\upload_file.php on line 68
Array
但不幸的是,这段代码是巨大代码的一部分。所以这里第 68 行是 $result = mysqli_query($con, "select * from uploads"); 开始的行。
【问题讨论】:
-
$row 将是一个数组。在字符串上下文中打印一个数组只会给你
Array。您的上传处理也是非常不安全的,并且除了容易受到 SQL 注入攻击之外,恶意用户还可以在您的服务器上随处乱写他们的文件。如果您尝试过,您将无法编写 LESS 安全代码。同样,您在 while 循环中关闭了数据库连接,因此即使其他一切正常,您也只能打印出 ONE 记录。 -
我想我已经描述了我想要什么和什么不起作用。请我的要求,再读一遍。 @约翰康德
-
@user3017315 - 不,您说您的代码“不起作用”。你得到一个空白屏幕吗?错误信息?它不返回任何行吗?一些行?所有的行?打印出错误的东西?正确的事情,错误的方式?有许多事情可能不起作用。
-
没有。仔细看,db连接在while循环内没有关闭。请仔细查看。 @MarcB
-
啊,我明白了。您需要正确缩进代码...不,您没有正确描述问题。您只是说“此代码不起作用”。不工作如何?崩溃?错误的结果?删除不应该删除的内容?踢你的狗?