如何在PHP中上传文件并在SQLi数据库中存储信息?

如何在PHP中上传文件并在SQLi数据库中存储信息?,php,file,mysqli,upload,Php,File,Mysqli,Upload,因此,我尝试上传这个文件,并将文件大小、名称和URL等信息存储在数据库中,同时将文件上传到我计算机上的文件夹中(用于测试目的)。上传没有问题,我唯一的问题是我想要的信息没有存储在数据库中 if($_SERVER['REQUEST_METHOD']=='POST') { $target_dir = "uploads/"; $file_name=basename($_FILES["fileToUpload"]["name"]); $target_file = $target_dir . $file_

因此,我尝试上传这个文件,并将文件大小、名称和URL等信息存储在数据库中,同时将文件上传到我计算机上的文件夹中(用于测试目的)。上传没有问题,我唯一的问题是我想要的信息没有存储在数据库中

if($_SERVER['REQUEST_METHOD']=='POST') {
$target_dir = "uploads/";
$file_name=basename($_FILES["fileToUpload"]["name"]);
$target_file = $target_dir . $file_name;
$fileSize=$_FILES["fileToUpload"]["size"];
$uploadOk = 1;
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
$complete=$file_name.$imageFileType;
$myUrl=$target_dir.$complete;

// Check if file already exists
if (file_exists($target_file)) {
    echo "Sorry, file already exists.";
    $uploadOk = 0;
}
 // Check file size
if ($_FILES["fileToUpload"]["size"] > 10000000) {
    echo "Sorry, your file is too large.";
    $uploadOk = 0;
 }
// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "pdf" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
    echo "Sorry, only PDF, JPG, JPEG, PNG & GIF files are allowed.";
    $uploadOk = 0;
}
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
    echo "Sorry, your file was not uploaded.";
// if everything is ok, try to upload file
} else {

    if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
        $mysqli=connect();
        $stmt=$mysqli->prepare('INSERT INTO tbl_file (file_name,file_title,file_size,file_url) VALUES (?,?,?,?)') or die(mysqli_error());

        $stmt->execute();
        $stmt->bind_param('ssis',$complete,$file_name,$fileSize,$myUrl);
        $stmt->close();
        echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.<br>";

    } else {
        echo "Sorry, there was an error uploading your file.";
    }
}}
if($\u服务器['REQUEST\u METHOD']=='POST'){
$target_dir=“uploads/”;
$file_name=basename($_FILES[“fileToUpload”][“name”]);
$target\u file=$target\u dir.$file\u name;
$fileSize=$_文件[“fileToUpload”][“size”];
$uploadOk=1;
$imageFileType=pathinfo($target\u文件,pathinfo\u扩展名);
$complete=$file\u name.$imageFileType;
$myUrl=$target_dir.$complete;
//检查文件是否已经存在
如果(文件_存在($target_文件)){
echo“抱歉,文件已存在。”;
$uploadOk=0;
}
//检查文件大小
如果($_文件[“fileToUpload”][“size”]>10000000){
echo“对不起,您的文件太大了。”;
$uploadOk=0;
}
//允许某些文件格式
如果($imageFileType!=“jpg”&&&$imageFileType!=“pdf”&&&$imageFileType!=“png”&&&$imageFileType!=“jpeg”
&&$imageFileType!=“gif”){
echo“抱歉,只允许使用PDF、JPG、JPEG、PNG和GIF文件。”;
$uploadOk=0;
}
//检查$uploadOk是否被错误设置为0
如果($uploadOk==0){
echo“抱歉,您的文件未上载。”;
//如果一切正常,请尝试上载文件
}否则{
如果(移动上传的文件($文件[“fileToUpload”][“tmp文件名”],$target文件)){
$mysqli=connect();
$stmt=$mysqli->prepare('插入tbl_文件(文件名、文件标题、文件大小、文件url)值(?、?、?)')或die(mysqli_错误());
$stmt->execute();
$stmt->bind_param('ssis',$complete,$file_name,$fileSize,$myUrl);
$stmt->close();
回显“文件”。已上载basename($_FILES[“fileToUpload”][“name”])。
; }否则{ echo“抱歉,上载文件时出错。”; } }}

它必须与SQL语句有关,但我看不出它是什么,有什么想法吗?

我看到您在调用execute()之后调用了bindParameters()方法。 应该是相反的

i、 e


我想可能是因为您使用了不正确的方法打开到MySQL服务器的新连接

您可以创建如下所示的新连接:

$mysqli=new mysqli("dbhost","username","passwd","dbname"); 


此外,必须先绑定参数,然后执行sql。

有什么错误?没有出现任何错误,这让我很困惑。我正在通过Xampp运行这个测试,数据库已经全部设置好了,所以我不知道为什么它不工作。
它不工作
哪个不工作?你能说得具体一点吗?你开始错误报告了吗?这就是问题所在,完全忘记了bindParameters()在执行之前的作用,我想到的是bindResults()。非常感谢。
$mysqli=new mysqli("dbhost","username","passwd","dbname"); 
$mysqli=new mysqli();
$mysqli->connect("dbhost","username","passwd","dbname");
$connection = mysqli_connect("dbhost","username","passwd","dbname");