我有一个与图片服务器绑定的数据库。如果没有上传图片,我想在其位置放置“不可用”的照片。每个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']; }
答案 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'
。