0

我正在尝试上传文件,然后将其移动到 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 错误:[Microsoft][ODBC Microsoft Access Driver] 查询表达式中的语法错误(缺少运算符)'file(C:/AccessBackEnds/LiveDesk/Uploads/CdpPacket .inf)'.,第 26 行 C:\xampp\htdocs\test\upload_file.php 中 SQLExecDirect 中的 SQL 状态 37000

任何帮助表示赞赏,谢谢。

4

1 回答 1

0

PHP 使用一个临时文件名来存储上传,它不是客户端机器上的文件名。

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

那应该是['tmp_name']

还有……Access小姐有file()功能吗?我找不到任何迹象表明它确实如此。

于 2013-04-25T16:59:28.423 回答