问题用/ php查找文件

时间:2009-07-21 20:08:16

标签: php syntax

我有一个与图片服务器绑定的数据库。如果没有上传图片,我想在其位置放置“不可用”的照片。每个pic的数字顺序基于数据库$row['Item_ID']中的主键。我的下面的脚本搜索文件,但找不到任何图片,所以它使用“不可用”的一切。我写'$row["Item_ID"]'时,我不确定是否可以在第一行使用双引号。

$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']; }

4 个答案:

答案 0 :(得分:5)

前两行不必要地执行(或尝试执行)字符串替换。

单引号分隔的字符串不会针对变量或转义序列进行插值。

但实际上,你正在通过电子邮件过于复杂 - 只需在一行上连接文件路径,并在需要时将故障转移到不可用的映像。

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

答案 1 :(得分:2)

不插入单引号。

答案 2 :(得分:2)

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

需要阅读

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

甚至

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

当它在单引号内时,PHP不会将 $ img_var 解析为其值,它只使用字符串 “$ img_var”

答案 3 :(得分:0)

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

请注意$path_to_root。您的HTML根目录与您的PHP根目录不同(除非您的服务器是以这种方式专门配置的......我的不是),因此您必须确保路径正确。我喜欢使用define('ROOT', dirname(__FILE__));将PHP文件放在我网站的底部,然后您就可以ROOT.'/path/to/whatever.jpg'