php条件不起作用

时间:2013-02-15 07:13:15

标签: php

我试图根据查询结果为空白或等于上传的条件隐藏网站上的网址,但我似乎无法使其正常工作。

我基本上有一个MySQL表,其中有一个名为file的字段,现在用户提交表单,文件字段不是必需的,但会保存数据库中的“upload /”。例如,如果我提交表单两次,一个带文件附件,第二个没有附件,我的表格将如下所示:

fileID   |  filename
1        |  upload/file1.txt
2        |  upload/

现在,在我的页面上,我只希望它显示结果,如果有文件上传但我似乎无法使其工作。这是我尝试过的:

if ($filename = "upload/" ) {
   echo "No file uploaded";
} else {
  echo "<div class='span2' style='padding-left:10px;'><a href='".$filename."'>Download Attachment</a></div>";
}

但无论我是否上传了文件,它都会回复“没有上传文件”。

3 个答案:

答案 0 :(得分:3)

您正在使用赋值运算符而不是相等运算符。

将第一行更改为:

if ($filename == "upload/" ) {

答案 1 :(得分:3)

使用等于运算符==代替=

if ($filename == "upload/" ) {
 echo "No file uploaded";
}else {
  echo "<div class='span2' style='padding-left:10px;'><a href='".$filename."'>Download Attachment</a></div>";
}

答案 2 :(得分:2)

你正在做作业。

if ($filename = "upload/" )

基本上转换为“将$ filename的值设置为'upload',然后检查它是否有值。当然它总是会有一个值,因此返回true。

您需要使用比较操作

if ($filename == "upload/" )

由于=和==如此相似,这样的问题很容易出现。一些程序员遵循将左边不能改变的值(常量,文字,函数调用等)放在左边的惯例,这样如果他们不小心输入=而不是==,程序就会出错,而不是表现出那种行为你在观察,发现这样的错误要容易得多。

if ('upload/' == $filename)

如果你不小心写了

if ('upload/' = $filename)

然后PHP会尝试为常量赋值。这显然会失败,您的PHP脚本将以致命错误终止,告知错误发生的确切位置。找到并修复它然后变得非常容易。