Php 在数据库中的一行中插入多个图像名称
朋友们,请帮我解决这个问题。 我已经创建了一个可以将多个图像插入到一行数据库中的数据库,现在我的代码运行良好,但不可能将所有图像存储在一个数据库行中,因为它存储在多行中。这是我迄今为止所做的Php 在数据库中的一行中插入多个图像名称,php,mysql,Php,Mysql,朋友们,请帮我解决这个问题。 我已经创建了一个可以将多个图像插入到一行数据库中的数据库,现在我的代码运行良好,但不可能将所有图像存储在一个数据库行中,因为它存储在多行中。这是我迄今为止所做的 <?php mysql_connect("localhost","root",""); mysql_select_db("test"); $uploads_dir = 'photo/'; foreach ($_FILES["image"]["error"] as $key => $erro
<?php
mysql_connect("localhost","root","");
mysql_select_db("test");
$uploads_dir = 'photo/';
foreach ($_FILES["image"]["error"] as $key => $error) {
if ($error == UPLOAD_ERR_OK) {
$tmp_name = $_FILES["image"]["tmp_name"][$key];
$name = $_FILES["image"]["name"][$key];
move_uploaded_file($tmp_name, "$uploads_dir/$name");
$sql=mysql_query("INSERT INTO multiimg SET image='$name'");
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script>
function addmore(num)
{
if(num==1)
{
document.getElementById('field2').style.display='block';
document.getElementById('ni1').style.display='block';
return false;
}
else if(num==2)
{
document.getElementById('field3').style.display='block';
return false;
}
}
</script>
</head>
<body>
<form enctype="multipart/form-data" name="" action="" method="post">
<div id="field1">Enter One Image :<input type="file" name="image[]" id="img1"/><a href="#" onclick="addmore(1)" id="ni1">addmore...</a></div>
<div id="field2" style="display:none;">Enter Two Image :<input type="file" name="image[]" id="img2"/><a href="#" onclick="addmore(2);">add more...</a></div>
<div id="field3" style="display:none;">Enter Three Image :<input type="file" name="image[]" id="img3"/><a href="#" onclick="addmore(3)" id="ni3">addmore...</a></div>
<div id="field4" style="display:none">Enter Forth Image :<input type="file" name="image[]" id="img4"/><a href="#" onclick="addmore(4)" id="ni4">addmore...</a></div>
<input type="submit" name="submit"/>
</form>
</body>
</html>
无标题文件
函数addmore(num)
{
如果(num==1)
{
document.getElementById('field2').style.display='block';
document.getElementById('ni1').style.display='block';
返回false;
}
else if(num==2)
{
document.getElementById('field3').style.display='block';
返回false;
}
}
输入一个图像:
输入两个图像:
输入三个图像:
输入第四个图像:
提示代码不准确
循环并运行多个图像名称的循环,并将它们存储在单个变量中
foreach( $_FILES["image"]["name"] as $key=>$value){
$name .=$value;
}
$sql=mysql_query("INSERT INTO multiimg (`fieladname`) VALUES (insertField));
这将为所有行存储相同的名称
我希望这将解决您的问题提示不准确的代码
循环并运行多个图像名称的循环,并将它们存储在单个变量中
foreach( $_FILES["image"]["name"] as $key=>$value){
$name .=$value;
}
$sql=mysql_query("INSERT INTO multiimg (`fieladname`) VALUES (insertField));
这将为所有行存储相同的名称
我希望这将解决您的问题请尝试下面的代码
$images_name ="";
foreach ($_FILES["image"]["error"] as $key => $error) {
if ($error == UPLOAD_ERR_OK) {
$tmp_name = $_FILES["image"]["tmp_name"][$key];
$name = $_FILES["image"]["name"][$key];
move_uploaded_file($tmp_name, "$uploads_dir/$name");
$images_name =$images_name.",".$name;
}
}
$sql=mysql_query("INSERT INTO multiimg(image) values('".$images_name."')");
试试下面的代码
$images_name ="";
foreach ($_FILES["image"]["error"] as $key => $error) {
if ($error == UPLOAD_ERR_OK) {
$tmp_name = $_FILES["image"]["tmp_name"][$key];
$name = $_FILES["image"]["name"][$key];
move_uploaded_file($tmp_name, "$uploads_dir/$name");
$images_name =$images_name.",".$name;
}
}
$sql=mysql_query("INSERT INTO multiimg(image) values('".$images_name."')");
您可以通过两种方式实现这一点,一种是按照@Miya和@Affan的回答连接图像名称,另一种是为每个图像创建单独的列 我将解释第二种方法 您有四个固定的图像上传按钮。所以,在db表中不需要单列“image”,而是可以为单独的image分别设置四列 因此,表模式将是
id | image1 | image2 | image3 | image4
现在您可以使用单个插入查询插入所有图像,如下所示:
$uploads_dir = 'photo/';
$name = array();
$i=1;
foreach ($_FILES["image"]["error"] as $key => $error) {
$name[$i] == "";
if ($error == UPLOAD_ERR_OK) {
$tmp_name = $_FILES["image"]["tmp_name"][$key];
$name[$i] = $_FILES["image"]["name"][$key];
move_uploaded_file($tmp_name, "$uploads_dir/$name");
$sql=mysql_query("INSERT INTO multiimg SET image='$name'");
}
$i++;
}
$sql=mysql_query("INSERT INTO multiimg (`image1`,`image2`,`image3`,`image4`) VALUES ('$name[1]','$name[2]','$name[3]','$name[4]')");
我建议您使用这种方法,因为将来如果您想要获取图像名称,那么它将比第一种方法插入的值更容易 您可以通过两种方式来实现这一点,一种是按照@Miya和@Affan的回答连接图像名称,另一种是为每个图像创建单独的列 我将解释第二种方法 您有四个固定的图像上传按钮。所以,在db表中不需要单列“image”,而是可以为单独的image分别设置四列 因此,表模式将是
id | image1 | image2 | image3 | image4
现在您可以使用单个插入查询插入所有图像,如下所示:
$uploads_dir = 'photo/';
$name = array();
$i=1;
foreach ($_FILES["image"]["error"] as $key => $error) {
$name[$i] == "";
if ($error == UPLOAD_ERR_OK) {
$tmp_name = $_FILES["image"]["tmp_name"][$key];
$name[$i] = $_FILES["image"]["name"][$key];
move_uploaded_file($tmp_name, "$uploads_dir/$name");
$sql=mysql_query("INSERT INTO multiimg SET image='$name'");
}
$i++;
}
$sql=mysql_query("INSERT INTO multiimg (`image1`,`image2`,`image3`,`image4`) VALUES ('$name[1]','$name[2]','$name[3]','$name[4]')");
我建议您使用这种方法,因为将来如果您想要获取图像名称,那么它将比第一种方法插入的值更容易 试试这样的方法:
$uploads_dir = 'photo/';
$imageArr = array();
foreach ($_FILES["image"]["error"] as $key => $error) {
if ($error == UPLOAD_ERR_OK) {
$tmp_name = $_FILES["image"]["tmp_name"][$key];
$name = $_FILES["image"]["name"][$key];
move_uploaded_file($tmp_name, "$uploads_dir/$name");
array_push($imageArr,$name);
}
}
$sql=mysql_query("INSERT INTO multiimg SET image='".json_encode($imageArr)."'");
当您从数据库中选择它时,您可以使用
json\u decode
以数组形式获取图像。尝试以下操作:
$uploads_dir = 'photo/';
$imageArr = array();
foreach ($_FILES["image"]["error"] as $key => $error) {
if ($error == UPLOAD_ERR_OK) {
$tmp_name = $_FILES["image"]["tmp_name"][$key];
$name = $_FILES["image"]["name"][$key];
move_uploaded_file($tmp_name, "$uploads_dir/$name");
array_push($imageArr,$name);
}
}
$sql=mysql_query("INSERT INTO multiimg SET image='".json_encode($imageArr)."'");
当您从数据库中选择它时,您可以使用
json\u decode
在数组中获取图像。您可以使用serialize()
函数在单行中存储多个图像名称。使用以下代码:
$uploads_dir = 'photo/';
$imageArr = array();
foreach ($_FILES["image"]["error"] as $key => $error) {
if ($error == UPLOAD_ERR_OK) {
$tmp_name = $_FILES["image"]["tmp_name"][$key];
$name = $_FILES["image"]["name"][$key];
move_uploaded_file($tmp_name, "$uploads_dir/$name");
array_push($imageArr,$name);
}
}
$imageArr=serialize($imageArr);
$sql=mysql_query("INSERT INTO multiimg SET image='".$imageArr."'");
After that use unserialize() function,this will show the array of that multiple image. user the bellow code:
$sql1=mysql_query("Select * from multiimg");
$result=mysql_fetch_assoc($sql1);
print_r(unserialize($result['image']));
您可以使用
serialize()
函数将多个映像名称存储在一行中。使用以下代码:
$uploads_dir = 'photo/';
$imageArr = array();
foreach ($_FILES["image"]["error"] as $key => $error) {
if ($error == UPLOAD_ERR_OK) {
$tmp_name = $_FILES["image"]["tmp_name"][$key];
$name = $_FILES["image"]["name"][$key];
move_uploaded_file($tmp_name, "$uploads_dir/$name");
array_push($imageArr,$name);
}
}
$imageArr=serialize($imageArr);
$sql=mysql_query("INSERT INTO multiimg SET image='".$imageArr."'");
After that use unserialize() function,this will show the array of that multiple image. user the bellow code:
$sql1=mysql_query("Select * from multiimg");
$result=mysql_fetch_assoc($sql1);
print_r(unserialize($result['image']));
您可以用逗号分隔插入它。您想要“插入”还是“更新”查询?如果“插入”,则查询错误。也不可能使用分隔符@ツ爱上机器人ツ我想插入操作插入操作将为数据库中的每个图像创建单独的行,并且您的问题陈述说您希望插入单行。您可以以逗号分隔插入。您希望“插入”还是“更新”查询?如果“插入”,则查询错误。也不可能使用分隔符@ツ爱上机器人ツ我喜欢插入操作插入操作将为数据库中的每个图像创建单独的行,并且您的问题陈述说您要在单行中插入。在“插入”查询中,“集”应该做什么?抱歉,我只是复制用户的答案。。。。设置关键字use with update以便根据您的操作进行更改“设置”在“插入”查询中应该做什么?抱歉,我只是复制用户答案。。。。设置关键字use with update以便根据您的操作进行更改它正在工作,但在每次插入数据库之前,它将占用一个空行。您是否已检查@Miya GIf它是否适用于您的数据库?然后,您可以根据自己的喜好修改此代码。@sameerkumar为什么在sql查询中使用设置条件?每次以前的值都将替换为新值。你注意到了吗?在名字插入@Miya G之前,我无法避免插入前的一行。谢谢你@Miya G它现在可以工作了。非常感谢。它可以工作了,但是每次插入数据库之前都需要一个空白行。你检查了@Miya GIf它对你的工作了吗,您可以根据自己的喜好修改此代码。@sameerkumar为什么在sql查询中使用set条件?每次以前的值都将替换为新值。你注意到了吗?在名称插入@Miya G之前,我无法避免预插入行。谢谢你@Miya G它现在可以工作了。非常感谢。图像字段不受限制@rack_Nilesh图像字段不受限制@rack_Nilesh这群人正在将空值带入数据库,只有最后的图像名称是空的转到table字段,并且它在@FIA2008中采取单独的行,因为每次运行脚本时,都会将图像插入新行中。将查询更改为
UPDATE
,但您至少需要先有一行。只需用新数据更新图像单元。首先,选择该行,然后用旧值附加新值,然后更新。对不起,在使用json_encode
时忘记将$name更改为imageArr这一组将null值带入数据库,并且只有最后一个图像名会进入表字段,并且它会在@FIA2008处单独获取行,因为每次运行脚本时,图像都会插入到新行中。将查询更改为UPDATE
,但您至少需要先有一行。只需用新数据更新图像单元。首先,选择该行,然后用旧值附加新值,然后更新。对不起,忘记更改$na