检查是否在 php 的字段数组中选择了文件
check if file selected in field array in php
我必须更新包含多个文件输入类型字段的数据库。
所有输入字段的名称都相同。
<input type="text" name="title[]">
<input type="file" name="image[]">
<input type="text" name="title[]">
<input type="file" name="image[]">
<input type="text" name="title[]">
<input type="file" name="image[]">
现在不强制选择所有图像,可能会更改所有标题但只选择第 3 张图像。现在我只想在选择图像时上传文件,否则避免上传。
这是行动页面:
<?php
$title = $_POST['title'];
$upload = 0;
for($i=0; $i<sizeof($title); $i++)
{
if(!empty($_FILES['image'][$i]))
{
// upload file and set flag upload=1
} else {
// set flag upload=0
}
if($upload == 1)
{
$qry = "UPDATE <table_name> SET title='$title[$i]', image='$image' WHERE <match found>";
// execute $qry
} else {
$qry = "UPDATE <table_name> SET title='$title[$i]' WHERE <match found>";
// execute $qry
}
}
但每次只有 else
语句是 运行 选择图像时甚至未选择图像时的事件。
Update 2 : Result of print_r($_FILES);
Array
(
[image] => Array
(
[name] => Array
(
[0] =>
[1] => Selection_238.png
[2] =>
)
[type] => Array
(
[0] =>
[1] => image/png
[2] =>
)
[tmp_name] => Array
(
[0] =>
[1] => /tmp/phpqSB0Jn
[2] =>
)
[error] => Array
(
[0] => 4
[1] => 0
[2] => 4
)
[size] => Array
(
[0] => 0
[1] => 72259
[2] => 0
)
)
)
在第二个输入字段中选择的图像
首先,您需要将代码 if($upload = 1)
中的 =
更改为 ==
。因为 =
是 assignment
运算符而不是 comparison
运算符。
检查一下,可能你的问题已经解决了。否则请检查以下可能的解决方案
1.
<?php
$title = $_POST['title'];
for($i=0; $i<sizeof($title); $i++)
{
if(!empty($_FILES['image']['name'][$i]))
{
// check if file uploaded then run below query
$qry = "UPDATE <table_name> SET title='$title[$i]', image='$image' WHERE <match found>"; // you can apply if else here based on move_uploaded_file output
} else {
// set flag upload=0
$qry = "UPDATE <table_name> SET title='$title[$i]' WHERE <match found>";
}
}
?>
2.
<?php
$title = $_POST['title'];
$upload = 0; // define here
for($i=0; $i<sizeof($title); $i++)
{
if(!empty($_FILES['image']['name'][$i]))
{
// upload file and set flag $upload = 1
} else {
// set flag $upload = 0
}
if($upload == 1) // you need to change = (assignment) to == (comparision)
{
$qry = "UPDATE <table_name> SET title='$title[$i]', image='$image' WHERE <match found>";
// execute $qry
} else {
$qry = "UPDATE <table_name> SET title='$title[$i]' WHERE <match found>";
// execute $qry
}
}
?>
我必须更新包含多个文件输入类型字段的数据库。 所有输入字段的名称都相同。
<input type="text" name="title[]">
<input type="file" name="image[]">
<input type="text" name="title[]">
<input type="file" name="image[]">
<input type="text" name="title[]">
<input type="file" name="image[]">
现在不强制选择所有图像,可能会更改所有标题但只选择第 3 张图像。现在我只想在选择图像时上传文件,否则避免上传。
这是行动页面:
<?php
$title = $_POST['title'];
$upload = 0;
for($i=0; $i<sizeof($title); $i++)
{
if(!empty($_FILES['image'][$i]))
{
// upload file and set flag upload=1
} else {
// set flag upload=0
}
if($upload == 1)
{
$qry = "UPDATE <table_name> SET title='$title[$i]', image='$image' WHERE <match found>";
// execute $qry
} else {
$qry = "UPDATE <table_name> SET title='$title[$i]' WHERE <match found>";
// execute $qry
}
}
但每次只有 else
语句是 运行 选择图像时甚至未选择图像时的事件。
Update 2 : Result of
print_r($_FILES);
Array
(
[image] => Array
(
[name] => Array
(
[0] =>
[1] => Selection_238.png
[2] =>
)
[type] => Array
(
[0] =>
[1] => image/png
[2] =>
)
[tmp_name] => Array
(
[0] =>
[1] => /tmp/phpqSB0Jn
[2] =>
)
[error] => Array
(
[0] => 4
[1] => 0
[2] => 4
)
[size] => Array
(
[0] => 0
[1] => 72259
[2] => 0
)
)
)
在第二个输入字段中选择的图像
首先,您需要将代码 if($upload = 1)
中的 =
更改为 ==
。因为 =
是 assignment
运算符而不是 comparison
运算符。
检查一下,可能你的问题已经解决了。否则请检查以下可能的解决方案
1.
<?php
$title = $_POST['title'];
for($i=0; $i<sizeof($title); $i++)
{
if(!empty($_FILES['image']['name'][$i]))
{
// check if file uploaded then run below query
$qry = "UPDATE <table_name> SET title='$title[$i]', image='$image' WHERE <match found>"; // you can apply if else here based on move_uploaded_file output
} else {
// set flag upload=0
$qry = "UPDATE <table_name> SET title='$title[$i]' WHERE <match found>";
}
}
?>
2.
<?php
$title = $_POST['title'];
$upload = 0; // define here
for($i=0; $i<sizeof($title); $i++)
{
if(!empty($_FILES['image']['name'][$i]))
{
// upload file and set flag $upload = 1
} else {
// set flag $upload = 0
}
if($upload == 1) // you need to change = (assignment) to == (comparision)
{
$qry = "UPDATE <table_name> SET title='$title[$i]', image='$image' WHERE <match found>";
// execute $qry
} else {
$qry = "UPDATE <table_name> SET title='$title[$i]' WHERE <match found>";
// execute $qry
}
}
?>