通过php将pdf文件上载到mysql时查询失败

通过php将pdf文件上载到mysql时查询失败,php,html,mysql,Php,Html,Mysql,我试图做一个上传按钮,能够上传一个pdf文件到数据库,但它面临一些问题。我使用的数据库是mySQL 弹出窗口供用户输入文档 <form method="POST" action="upload.php" enctype="multipart/form-data"> <div> <label for="citation">Citation</label> <textarea name="citation"

我试图做一个上传按钮,能够上传一个pdf文件到数据库,但它面临一些问题。我使用的数据库是mySQL

弹出窗口供用户输入文档

<form method="POST" action="upload.php" enctype="multipart/form-data">
    <div>
        <label for="citation">Citation</label>
        <textarea name="citation" id="citation" placeholder="Enter text here..."></textarea>
    </div>
    <div>
        <label for="abstract">Abstract</label>
        <textarea name="abstract" id="abstract" placeholder="Enter text here..."></textarea>
    </div>
        <p>Upload your file here</p>
        <input type="hidden" name="MAX_FILE_SIZE" value="2000000">
        <input name="userfile" type="file" id="userfile">&nbsp;
        <br/> 
        <input name="submit" type="submit" value="Upload" style="width: 150px">
                <a class="close" href="#close"></a>
    </form>

引用
摘要
在这里上传你的文件


这是upload.php

<?php
        // Connect to the database
        $host="localhost"; // Host name 
        $username="root"; // Mysql username 
        $password=""; // Mysql password 
        $db_name="is"; // Database name 
        $tbl_name="publication"; // Table name 

        $conn = mysql_connect("$host", "$username", "$password"); 
        if(! $conn )
        {
          die('Could not connect: ' . mysql_error());
        }

        mysql_select_db($db_name);

        $cit=mysql_real_escape_string($_POST['citation']);
        $abs=mysql_real_escape_string($_POST['abstract']);

        if(isset($_POST['submit']) && $_FILES['userfile']['size'] > 0)
        {
        $fileName = $_FILES['userfile']['name'];
        $tmpName  = $_FILES['userfile']['tmp_name'];
        $fileSize = $_FILES['userfile']['size'];
        $fileType = $_FILES['userfile']['type'];

        $fp      = fopen($tmpName, 'r');
        $content = fread($fp, filesize($tmpName));
        $content = addslashes($content);
        fclose($fp);

        if(!get_magic_quotes_gpc())
        {
            $fileName = addslashes($fileName);
        }

        $query = "INSERT INTO publication ('citation','abstract','file_name', 'file_size', 'file_type', 'file_content' ) VALUES ('$cit','$abs','$fileName', '$fileSize', '$fileType', '$content')";

        mysql_query($query) or die('Error, query failed'); 


        echo "<script type='text/javascript'>alert('File $fileName uploaded!');
                window.location.href='home_unlogin.php';
            </script>";
        } 
        mysql_close($conn);
?>

或者,您可以在不包装字段名的情况下使用

    $query = "INSERT INTO publication (citation, abstract, file_name, file_size, file_type, file_content) VALUES ('$cit','$abs','$fileName', '$fileSize', '$fileType', '$content')";

因为字段名是标准名称,不是保留字或包含特殊字符。

对于SQL中的字段,可以不加引号,但对于值,无论是变量还是静态,它都应该在引号内

$select = "INSERT INTO tbl_table (tbl_field1,tbl_field2) VALUES ('$value1','Test')";

检查查询中的字段名时出现一个小的基本错误。@smozgur,我应该在查询中使用双引号?Backticks:`或不使用任何内容,因为它不包含任何保留字。$query=“INSERT-INTO-publication”(
引用
摘要
文件名
文件大小
文件类型
文件内容
)值(
$cit
$abs
$fileSize
$fileSize
$fileType
$content
)”@smozgur,像这样?我做了完全相同的…但是我仍然得到错误查询失败…我不知道为什么?请帮助…谢谢…使用以下命令执行您的查询:mysql\u query($query)或die(mysql\u error());并查看确切的错误。我修复的错误是关于字段周围的单引号。因此,现在您将看到mysql\u error()的错误而是打印出查询失败的字符串。
$select = "INSERT INTO tbl_table (tbl_field1,tbl_field2) VALUES ('$value1','Test')";