2013-04-25 100 views
0

我试图上传一个文件,然后将其移动到Access数据库。该字段被命名为“附件”并具有附件属性。它在Access中正常工作。
它上传到服务器善意,但我不能把它插入到数据库中。插入文件上传到附件领域中的Access数据库

<?php 
if ($_FILES["file"]["error"] > 0) 
{ 
echo "Return Code: " . $_FILES["file"]["error"] . "<br>"; 
} 
else 
{ 
echo "File name: " . $_FILES["file"]["name"] . "<br>"; 
echo "Type: " . $_FILES["file"]["type"] . "<br>"; 
echo "Size: " . ($_FILES["file"]["size"]/1024) . " kB<br>"; 
echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>"; 

move_uploaded_file($_FILES["file"]["tmp_name"], "C:/AccessBackEnds/LiveDesk/Uploads/" . $_FILES["file"]["name"]); 
echo "Stored in: LiveDesk/Uploads/"; 
} 

$file = "C:/AccessBackEnds/LiveDesk/Uploads/" . $_FILES["file"]["name"]; 

$db = realpath('C:\AccessBackEnds\LiveDesk\LiveDeskBackEnd.accdb'); 
$conn = odbc_connect("Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=$db",'','') or die ("Unable to connect to server"); 

$input="INSERT INTO CallTracker (Attachment) 
VALUES 
(file($file))"; 
$rs=odbc_exec($conn,$input); 

if (!$rs) 
{ 
die('Error: ' . mysql_error()); 
} 
?> 

的错误是 警告:odbc_exec()[function.odbc-EXEC]:SQL错误:[微软] [ODBC Microsoft Access驱动程序]语法错误(缺少操作员)在查询表达式“文件(C: /AccessBackEnds/LiveDesk/Uploads/CdpPacket.inf)',SQLExecDirect中的SQL状态37000,位于第26行的C:\ xampp \ htdocs \ test \ upload_file.php上

回答

0

PHP使用临时文件名来存储上传文件,即而不是客户端计算机上文件的名称。

$file = "C:/AccessBackEnds/LiveDesk/Uploads/" . $_FILES["file"]["name"]; 
                   ^^^^^^^^ 

那应该是['tmp_name']来代替。

,以及...没有微软的Access有file()功能?我找不到任何迹象表明它确实如此。