我想我还没理解PHP逻辑。我在javascript中的“if's”工作正常,但在PHP中它总是被忽略。我在insert_car.php中有这个表单(派对):
<input type="file" name="imagem01" id="imagem01" title="Imagem 01" onchange="readURL01(this);" class="button" />
...(还有5个图像输入和其他文本输入)
这是insert_db.php中的通讯方:
$gravar_imagem01 = $_FILES['imagem01'];
preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $gravar_imagem01["name"], $ext);
$nome_imagem01 = md5(uniqid(time())) . "." . $ext[1];
$caminho_imagem01 = "../../images/" . $nome_imagem01;
move_uploaded_file($gravar_imagem01["tmp_name"], $caminho_imagem01);
$sqlinsert = "INSERT INTO tb_carros (... imagem01,...) value (... '$nome_imagem01',...)";
它工作正常,但我知道如果其中一个输入文件为空,我想要放置一个默认图像。所以我在insert_db.php中做了这个:
if (empty($imagem01))
{
$gravar_imagem01 = "sem_imagem.jpg";
$nome_imagem01 = $gravar_imagem01;
}
else
{
$gravar_imagem01 = $_FILES['imagem01'];
preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $gravar_imagem01["name"], $ext);
$nome_imagem01 = md5(uniqid(time())) . "." . $ext[1];
$caminho_imagem01 = "../../images/" . $nome_imagem01;
move_uploaded_file($gravar_imagem01["tmp_name"], $caminho_imagem01);
}
已放置默认图像(sem_imagem.jpg),但即使输入“imagem01”不为空,也会显示默认图像。那么,我的代码有什么问题?
Ps。:如果我切换“if”和“else”条件,结果是相反的(即使输入imagem01为空,也不会出现默认图像)。这就是为什么我说我的“if”被忽略了。
答案 0 :(得分:1)
if
未被“忽略”;你可能误解了函数empty
的含义。在文档中查找,并检查它是否符合您的预期。
特别是,它并没有神奇地理解“文件”的概念 - empty
查看变量。可以想象,即使在您将图像文件视为“空”的情况下,$_FILES['imagem01']
仍然以某种形式存在。我建议在这种情况下检查它以找出使用哪个条件。
编辑:如果您使用正确的变量名称,它也会有所帮助:
if (empty($imagem01))
变为:
if (empty($_FILES['imagem01']))
答案 1 :(得分:1)
尝试这一点我认为$imagem01
一直是空的,您必须从imagem01
这样的表单中获取$imagem01= $_FILES['imagem01'];
数据,然后检查空you can't use JavaScript variable directly
,在这种情况下使用var_dump($var);
用于查看变量值
$imagem01= $_FILES['imagem01'];
if (empty($imagem01))
{
$gravar_imagem01 = "sem_imagem.jpg";
$nome_imagem01 = $gravar_imagem01;
}
else
{
$gravar_imagem01 = $_FILES['imagem01'];
preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $gravar_imagem01["name"], $ext);
$nome_imagem01 = md5(uniqid(time())) . "." . $ext[1];
$caminho_imagem01 = "../../images/" . $nome_imagem01;
move_uploaded_file($gravar_imagem01["tmp_name"], $caminho_imagem01);
}
答案 2 :(得分:1)
使用isset
更改此
if (empty($imagem01))
到
$gravar_imagem01 = $_FILES['imagem01'];
if (isset($gravar_imagem01))
答案 3 :(得分:0)
在代码中的任何其他位置都没有名为$imagem01
的变量,因此它始终是未定义的,empty($imagem01)
将始终返回true。您可能需要在if
声明中检查其他条件。