2013-02-15 97 views
0

我试图隐藏网站上的一个网址,条件是查询结果为空白或等于上传/但我似乎无法使其工作。php条件不起作用

我基本上有一个名为file的字段的MySQL表,现在用户提交表单,文件字段不是必需的,但它会保存数据库上的“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>"; 
} 

但echo'es了“不上传的文件”不管我有一个文件上传或不。

+0

感谢所有的回复,我想我可能会比我想象中的那么难以入睡。 – 2013-02-15 07:42:22

回答

3

使用相等运算符的==代替=

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

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

更改第一行:

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

你做的一项任务。

if ($filename = "upload/") 

基本上转化为“$文件名的值设置为‘上传’,然后检查是否有一个值。当然,它总是会在这一点上有一个值,因此返回true。

你需要使用比较操作这样突然出现的太容易

if ($filename == "upload/") 

问题,是由于=和==是如此的相似。有些程序员遵循将不能更改(常量的值的惯例,文字,函数调用等),如果他们交流而不是==程序会错误地输出,而不是展示你正在观察的那种行为,使得发现这样的错误变得容易很多。

​​

如果你不小心写

if ('upload/' = $filename) 

那么PHP将尝试分配一个新值不变。这显然会失败,并且您的PHP脚本将以致命错误终止,并确切地告诉错误发生的位置。找到并修复它变得非常容易。

+0

+1用于推理Yoda条件 – 2013-02-15 07:45:46