我通过下面的代码上传了多个图片(它的工作原理),但我无法将这些图片的网址插入到我的数据库中。我尝试了一些东西,但不能使它工作。我的代码尚未完成,所以我没有添加控件(文件类型,文件大小等)。从数组中插入多条记录到我的数据库
的index.php
<form action="upload.php" method="post" enctype="multipart/form-data">
<div id="file_container">
<input name="images[]" multiple type="file" id="file[]"/><br/>
<input type="submit">
</div>
</form>
upload.php的
$target = "upload/";
$test = 1;
foreach ($_FILES['images']['name'] as $key => $value) {
$path = $_FILES['images']['name'][$key];
$ext = pathinfo($path, PATHINFO_EXTENSION); // getting the extension
// creating a unique value here
$name = md5($name);
$generate1 = md5(date('Y-m-d H:i:s:u'));
$randomizer = uniqid($name);
$name = $name . $generate1 . $randomizer;
$makeaname = $target . $name . "." . $ext;
if ($test == 1) {
if (move_uploaded_file($_FILES['images']['tmp_name'][$key], $makeaname)) {
echo "<strong>" . $value . "</strong> successful <br />\n";
echo $makeaname; // it echoes image urls, so everything is okay so far.
}
} else {
echo "Failed";
}
我用下面的查询在foreach循环echo $makeaname;
后,但没有奏效。我感谢任何帮助或指导。
$upload_image = $sqli->prepare("INSERT INTO images(image_value, type, size) VALUES (?,?,?)");
$upload_image->bind_param("sss", $makeaname, $_FILES['images']['type'], $_FILES['images']['size']);
$upload_image->execute();
$ makeaname是一个字符串的文件名,而不是实际的文件。首先,您需要将“sss”的bind_param调用修改为“bss”,然后您需要提供实际的文件。请参阅https://blogs.oracle.com/oswald/entry/php_s_mysqli_extension_storing – hofan41
您是否检查过查询中的错误消息?也就是说'$ _FILES ['images'] ['type']'在你的绑定语句中正确吗?'换句话说,它应该是'$ _FILES ['images'] ['type'] [$ key]'? – Gohn67
@ Gohn67,谢谢。现在可以完美地添加大小和类型列。我还注意到,我忘记在我的文件顶部包含connect.php文件,这是我在2015年曾经做过的最愚蠢的事情。我对此表示祝贺。 – salep