2017-06-19 62 views
1

我是PHP的初学者。我在base64String中编码了一些图像。所有图像都在指定的文件夹中成功解码。我的问题是我只能够在数据库中记录一个图像/路径。有人帮助我想出了PHP将所有图像路径插入数据库中的一行。如何在PHP和mysql数据库中上传和插入多个图像

这里是PHP代码

<?PHP 
if(isset($_POST['image'])) 
{ 
$image = $_POST['image']; 
$identity = $_POST['id']; 
$username = $_POST['username']; 

//create unique image file name based on micro time and date 
$now = DateTime::createFromFormat('U.u', microtime(true)); 
$id = rand(1000000, 10000000000); 
$id2=rand(1000000, 10000000000); 

$upload_folder = "upload"; 
$id="$id$id2"; 
$path = "$upload_folder/$id.jpeg"; 

if(file_put_contents($path, base64_decode($image)) != false){ 
    echo "uploaded_success"; 

    $sql = "UPDATE apartment SET Image_path = '$path' WHERE apart_username 
    ='$username' AND id = '$identity'"; 

    mysqli_query($conn, $sql); 

} 
else{ 
    echo "uploaded_failed"; 
}  
exit; 
} 
else{ 
echo "images_not_in"; 
exit; 

} ?>

+0

[Little Bobby](http://bobby-tables.com/)说*** [您的脚本存在SQL注入攻击的风险。](http://stackoverflow.com/问题/ 60174/how-can-i-prevent-sql -injection-in-php)***了解[MySQLi](http)的[prepared](http://en.wikipedia.org/wiki/Prepared_statement) ://php.net/manual/en/mysqli.quickstart.prepared-statements.php)。即使[转义字符串](http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string)是不安全的! –

+0

我知道准备好的陈述。我使用此代码进行个人试用。我卡住了。如果可以的话请帮忙。 – KingAndy

+0

如果您第一次没有时间做对,那么您什么时候可以找到时间来添加它?当人们说*“我不是那么远......”*或*“这个网站不会被公开......”*或*“它只适用于学校,所以安全并不重要...... “*。如果教师和教授从一开始就没有谈论安全问题,他们就错了。挑战他们。他们正在教导草率和危险的编码习惯,学生们稍后将不得不忘记。当人们说:“我稍后会增加安全性......”或*“现在安全性不重要......”或*“忽略安全风险......”*。 –

回答

0

你需要某种形式的循环......我所做的在下面的例子中是不是使图像叫我一个变量创建了一个名为$ imagesArr的数组。我在imagesArr上添加了一个foreach循环,因此它将运行您为输入到该数组中的每个图像编写的代码。我也在最后杀死了出口,因为那样会阻止循环。这应该工作

<?PHP 
if(isset($_POST['image'])) 
{ 
//$image = $_POST['image']; - I commented this out 
$imagesArr = array('image1.jpeg','image2.jpeg','image3.jpeg'); //etc. put all of your images here into this array  
$identity = $_POST['id']; 
$username = $_POST['username']; 
foreach ($imagesArr as $key => $image) { 
//create unique image file name based on micro time and date 
$now = DateTime::createFromFormat('U.u', microtime(true)); 
$id = rand(1000000, 10000000000); 
$id2=rand(1000000, 10000000000); 

$upload_folder = "upload"; 
$id="$id$id2"; 
$path = "$upload_folder/$id.jpeg"; 

if(file_put_contents($path, base64_decode($image)) != false){ 
    echo "uploaded_success"; 

    $sql = "UPDATE apartment SET Image_path = '$path' WHERE apart_username 
    ='$username' AND id = '$identity'"; 

    mysqli_query($conn, $sql); 

} 
else{ 
    echo "uploaded_failed"; 
}  
} 
else{ 
echo "images_not_in"; 
} 
} 
+0

我只是修复了它... –

+0

图像来自Android,我想在数据库中将所有路径插入一行。 – KingAndy

+0

如何构建您的数据库完全取决于您(我会亲自将每张图像作为自己的行)......您仍然需要使用foreach循环来创建图像,但是如果您想要将它们全部放在一行中...你陷入了什么部分?将图像发布到数组? –

相关问题