使用PDO :: PARAM_LOB将图像上传到MariaDB表中的INSERT失败

时间:2018-04-20 11:11:31

标签: php pdo mariadb

我的问题是,当我在bindParam()方法中使用PDO :: PARAM_LOB参数时,从html表单发送的照片不会插入MariaDB表中。 phpMyAdmin随后显示表格列'photo'为空。 当我不使用PDO :: PARAM_LOB时,图像已成功插入表中,但这会导致在第80行的C:\ xampp \ htdocs \ TestSite \ php-sellform-handler.php中将Notice:Array转换为字符串在网页上显示给用户。 在同一表单上有其他字段(为简单起见,我没有显示)上传文本并使用PDO :: PARAM_STR。此文本数据始终成功插入同一个表中。 如何使用PDO :: PARAM_LOB使插入工作?

我在S / O上可以找到的最近的问题是PHP/PDO/MySQL: inserting into MEDIUMBLOB stores bad data 然而,这涉及到实际插入表中的图像,但是形式已损坏。

我正在使用Apache / 2.4.29(Win32)OpenSSL / 1.1.0g PHP / 7.2.2和10.1.30-MariaDB

这是我的代码:

$host = '127.0.0.1';
$db = 'test_db2';
$user = 'root';
$pass = '';
$charset = 'utf8mb4';

    $dsn = "mysql:host=$host;dbname=$db;charset=$charset";



$opt = [PDO::ATTR_ERRMODE =>PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::ATTR_EMULATE_PREPARES => false 
    ];


$pdo=new PDO($dsn, $user, $pass, $opt);



if (isset($_FILES ['photo'])) {

$photo=$_FILES['photo'];


$stmt_user = $pdo->prepare("INSERT INTO users_table1(photo) VALUES(:photo)");

$stmt_user->bindParam(':photo', $photo, PDO::PARAM_LOB);    

$stmt_user->execute();
}

感谢您的帮助!

0 个答案:

没有答案