0

クエリの結果が空白であるか、upload /と等しいという条件に基づいて、サイトのURLを非表示にしようとしていますが、機能しないようです。

基本的に、fileというフィールドを持つMySQLテーブルがあります。ユーザーがフォームを送信すると、fileフィールドは必須ではありませんが、データベースに「upload/」が保存されます。たとえば、フォームを2回送信すると、1つはファイルが添付され、もう1つは添付がない場合、テーブルは次のようになります。

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>";
}

しかし、ファイルがアップロードされているかどうかに関係なく、「ファイルはアップロードされていません」とエコーします。

4

3 に答える 3

3

等値演算子の代わりに代入演算子を使用しています。

最初の行を次のように変更します。

if ($filename == "upload/" ) {
于 2013-02-15T07:14:36.250 に答える
3

==の代わりに等値演算子を使用します=

if ($filename == "upload/" ) {
 echo "No file uploaded";
}else {
  echo "<div class='span2' style='padding-left:10px;'><a href='".$filename."'>Download Attachment</a></div>";
}
于 2013-02-15T07:14:50.023 に答える
2

あなたは課題をやっています。

if ($filename = "upload/" )

基本的に、「$filename の値を 'upload' に設定し、値があるかどうかを確認します。もちろん、その時点では常に値があるため、true を返します。

比較操作を使用する必要があります

if ($filename == "upload/" )

= と == が非常に似ているため、このような問題は簡単に発生します。一部のプログラマーは、変更できない値 (定数、リテラル、関数呼び出しなど) を左側に配置するという規則に従います。これにより、誤って == の代わりに = を入力すると、プログラムはそのような動作を示す代わりにエラーになります。あなたは観察しているので、そのようなエラーを見つけるのがずっと簡単になります.

if ('upload/' == $filename)

うっかり書いたら

if ('upload/' = $filename)

PHP は新しい値を定数に割り当てようとします。これは明らかに失敗し、エラーが発生した場所を正確に示す致命的なエラーで PHP スクリプトが終了します。それを見つけて修正するのは非常に簡単になります。

于 2013-02-15T07:15:09.103 に答える