MySQL / PDO / PHP - SQLSTATE [HY000]:一般错误:1366不正确的整数值:

时间:2017-08-07 16:05:10

标签: php mysql pdo

我可以看到这已被问过几次,但是在之前所有的实例中我都能看到答案是参数实际上并不是整数。我绝对是一个整数,至少在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不接受它呢?我必须遗失一些东西,但是我不能为我的生活看到它是什么。

0 个答案:

没有答案