我搜遍了谷歌的所有地方寻找答案,但我似乎无法找到合适的答案,所以我会在这里试一试。
我想在mysqli数据库中存储用户的firstname,lastname和图像路径,以及文件夹上传中的图像。 (用户可以上传多张图片)
这有效,没问题。
问题是:
例如,当他们键入他们的名字和姓氏并选择两个图像并按下上传按钮时,它会上传所有内容,但它也会创建两行,其值完全相同。
我想将所有内容存储在一行中,请参阅下面的代码:
<?php
$con = mysqli_connect('localhost','root','','img_db');
mysqli_select_db($con,'img_db');
$rn = mt_rand();
if(isset($_POST['submit'])&& isset($_FILES['image'])&& !empty($_POST['firstname'])&& !empty($_POST['lastname']))
{
$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];
for($i=0; $i<count($_FILES['image']['name']); $i++)
{
$tmp_name = $_FILES['image']['tmp_name'][$i];
$max_size = 100000;
$path = "uploads/";
$name = $_FILES['image']['name'][$i];
$size = $_FILES['image']['size'][$i];
$type = $_FILES['image']['type'][$i];
$ext = strtolower(substr($name, strpos($name, '.') +1));
$name = str_replace('_','',trim($name));
$name = str_replace('-','',trim($name));
$name = str_replace(' ','',trim($name));
$name = str_replace('__','',trim($name));
if(($ext=='jpg' || $ext=='jpeg' || $ext=='png' || $ext=='gif')&&($type=='image/jpeg' || $type=='image/png' || $type=='image/gif')&&$size<=$max_size)
{
if(move_uploaded_file($_FILES['image']['tmp_name'][$i], $path.$rn.$name))
{
mysqli_query($con,"INSERT into `img` (firstname,lastname,url) VALUES('$firstname','$lastname','$rn$name')");
}
}// END EXT
}// END FOR LOOP
}// END IF ISSET POST SUBMIT
?>
答案 0 :(得分:1)
一种解决方案是将上传的文件网址存储在array
(在for
循环之前声明)并使用array
循环之外的for
,如下所示:
if (isset(/* ... */)) {
// Outside your for loop
$files = array();
for (/* .. */) {
// Doing things
if (/* $ext stuff */) {
if (move_uploaded_file(/* ... */))
{
$files[] = $rn.$name;
}
} // End EXT
} // End FOR
// Utilize $files array to determine how you want to store all of these URLs in one field.
// Let's say you created a variable called $store with the desired representation.
mysqli_query($con,"INSERT into `img` (firstname,lastname,url) VALUES('$firstname','$lastname','$store')");
} // End ISSET
您可以使用双表结构(一个表是用户,一个表是图像),并通过所需用户的主键从每个图像表行创建外键关系到用户表行。 / p>
请参阅:http://dev.mysql.com/doc/refman/5.6/en/create-table-foreign-keys.html