通过php将pdf文件上载到mysql时查询失败
我试图做一个上传按钮,能够上传一个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"
<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">
<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')";