2009-07-21 3 views
0

Ich habe eine Datenbank, die an einen Server von Bildern gebunden ist. Für den Fall, dass ein Bild nicht hochgeladen wird, möchte ich ein "nicht verfügbares" Foto an seiner Stelle platzieren. Jedes Bild ist in numerischer Reihenfolge basierend auf dem Primärschlüssel aus der Datenbank $row['Item_ID']. Mein Skript unten sucht nach der Datei, kann aber keine Bilder finden, daher verwendet es das "nicht verfügbar" für alles. Ich bin mir nicht sicher, ob ich in der ersten Zeile doppelte Anführungszeichen verwenden kann, wenn ich '$row["Item_ID"]' schreibe.Problem finden Datei w/php

$img_var = '$row["Item_ID"]'; 
$item_img = '/item_images/$img_var.jpg';   
if (!file_exists($item_img))   
{ $row['Item_ID'] = 'unavailable'; }  
else { $row['Item_ID'] = $row['Item_ID']; } 

Antwort

2

Einfache Anführungszeichen werden nicht interpoliert.

2

Diese

$img_var = '$row["Item_ID"]'; 
$item_img = '/item_images/$img_var.jpg'; 

benötigt

$img_var = $row["Item_ID"]; 
$item_img = "/item_images/$img_var.jpg"; 

oder sogar

$item_img = "/item_images/{$row["Item_ID"]}.jpg"; 

Wenn es innerhalb Apostrophe zu lesen, wird PHP lösen nicht $ img_var, um seinen Wert Es verwendet nur die Zeichenfolge"$ img_var".

5

Ihre ersten zwei Zeilen führen unnötigen String-Austausch durch (oder versuchen, ihn auszuführen).

Mit einem Anführungszeichen getrennte Strings werden für Variablen oder Escape-Sequenzen nicht interpoliert.

Aber wirklich, Sie machst das übermäßig komplex - einfach verketten Sie den Dateipfad in einer einzigen Zeile und fail-over zu Ihrem nicht verfügbaren Bild, wenn Sie müssen.

$item_img = '/item_images/' . $row["Item_ID"] . '.jpg'; 
if (!file_exists($item_img)) 
{ 
    $item_img = '/item_images/unavailable.jpg'; 
} 
0
$item_img = '/item_images/'.$row['Item_ID'].'.jpg'; 
if(!file_exists($path_to_root.$item_img)) { 
    $item_img = '/item_images/unavailable.jpg'; 
} 

Notiere die $path_to_root. Ihr HTML-Root ist nicht dasselbe wie Ihr PHP-Root (es sei denn, Ihr Server ist speziell auf diese Weise konfiguriert ... meins ist nicht), also müssen Sie sicherstellen, dass die Pfade korrekt sind. Ich möchte eine PHP-Datei an der Basis meiner Website mit define('ROOT', dirname(__FILE__)); setzen und dann können Sie einfach ROOT.'/path/to/whatever.jpg' tun.