我可以看到这已被问过几次,但是在之前所有的实例中我都能看到答案是参数实际上并不是整数。我绝对是一个整数,至少在PHP中。
我正在尝试将pdf作为BLOB加载到MySQL数据库中。该文件似乎从PHP表单正确传递,我已经检查过size变量实际上是一个整数,它是。
代码段: -
//get file info and data
$name = $_FILES['uploaded_file']['name'];
$mime = $_FILES['uploaded_file']['type'];
//$data = file_get_contents($_FILES ['uploaded_file']['tmp_name']);
$tmpName = $_FILES['uploaded_file']['tmp_name'];
$fp = fopen($tmpName, 'r');
$data = fread($fp, filesize($tmpName));
fclose($fp);
$size = intval($_FILES['uploaded_file']['size']);
$created = date("Y-m-d H:i:s");
echo "captured fields";
echo "</br>";
echo $name;
echo "</br>";
echo $mime;
echo "</br>";
echo gettype($size), "</br>";
echo $size;
echo "</br>";
echo $created;
echo "</br>";
echo $enteredID;
echo "</br>";
//prepare the query
$query = "
INSERT INTO `file` (
`name`, `mime`, `size`, `data`, `created`, `category`, `relatedID`
)
VALUES (
':Name', ':Mime', ':Size', ':Data', NOW(), ':ScanType', ':EnteredID'
)";
$sth = $dbLink->prepare($query);
$sth->bindParam(':Name',$name, PDO::PARAM_STR);
$sth->bindParam(':Mime',$mime, PDO::PARAM_STR);
$sth->bindParam(':Size',$size, PDO::PARAM_INT);
$sth->bindParam(':Data',$data, PDO::PARAM_LOB);
//$sth->bindParam(':Created', $created, PDO::PARAM_STR);
$sth->bindParam(':ScanType', $scanType, PDO::PARAM_STR);
$sth->bindParam(':EnteredID', $enteredID, PDO::PARAM_STR);
$sth->execute();
回声语句是我试图弄清楚错误的位置。我也尝试过file_get_contents和fopen,因为我在PHP 5.5中工作但是更新到PHP7(ubuntu 16.04)我需要更新一堆代码。这也可能提供线索,因为MySQL中的一些设置似乎不同,我已经阅读了有关MySQL设置的内容,但是我不愿意更改这些设置,直到我对它们有更多了解。
MySQL表是: -
Field | Type | Null | Key | Default | Extra
+---------+---------------------+------+-----+--------------+----------------+
id | int(10) unsigned | NO | PRI | NULL | auto_increment |
name | varchar(255) | NO | | Untitled.txt |
mime | varchar(50) | NO | | text/plain |
size | bigint(20) unsigned | NO | | 0 |
data | mediumblob | NO | | NULL |
created | datetime | NO | | NULL |
category | varchar(8) | NO | | NULL |
relatedID | varchar(10) | NO | | NULL |
newSize | int(20) | YES | | NULL |
+-----------+---------------------+------+-----+--------------+----------------+
正如您所看到的,我尝试添加一个新列,以防它引起问题,但它没有任何区别。
变量类型肯定是一个整数,那么为什么MySQL不接受它呢?我必须遗失一些东西,但是我不能为我的生活看到它是什么。