我的问题是,当我在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();
}
感谢您的帮助!