0

我想我还不了解 PHP 逻辑。我在 javascript 中的“if”工作正常,但在 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 为空,默认图像也不会出现)。这就是为什么我说我的“如果”被忽略了。

4

4 回答 4

1

试试这个isset

改变这个

if (empty($imagem01))

$gravar_imagem01 = $_FILES['imagem01'];
if (isset($gravar_imagem01))
于 2013-04-27T12:58:48.317 回答
1

if没有被“忽略” ;您可能误解了函数的含义empty。在文档中查找它,并检查它是否按照您的想法执行。

特别是,它不能神奇地理解“文件”的概念——empty变量。可以想象,$_FILES['imagem01']即使在您认为图像文件为“空”的情况下,它仍然以某种形式存在。我建议在这种情况下检查它以找出使用哪个条件。


编辑:如果您使用正确的变量名,它也会有所帮助:

if (empty($imagem01))

变成:

if (empty($_FILES['imagem01']))
于 2013-04-27T12:58:20.297 回答
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);
 }
于 2013-04-27T12:58:28.473 回答
0

在您的代码中的其他任何地方都没有命名变量$imagem01,因此它总是未定义并且empty($imagem01)总是返回 true。您可能需要检查if语句中的不同条件。

于 2013-04-27T14:14:04.400 回答