2013-04-25 99 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()功能?我找不到任何跡象表明它確實如此。