php - php变量问题

  显示原文与译文双语对照的内容
0 0

我有下面的php代码,为了简洁起见。 在声明 $lastImg 之后,我将有问题,特别是大小从来没有被分配任何值,因这里outputWidth和outputHeight保持空白。 我一直无法找到这一切的原因。

pic_url只是数据库中的一个字符串,并且绝对指向一个有效的图像。 当我运行页面时没有调整代码大小,图像会显示得很完美。

<?php
header("Content-Type: text/html; charset=utf-8");
if (isset($_GET["cmd"]))
 $cmd = $_GET["cmd"];
else
 die("You should have a 'cmd' parameter in your URL");
$pk = $_GET["pk"];
$con = mysql_connect("localhost","someuser","notreal");
if(!$con)
{
 die('Connection failed because of'. mysql_error());
}
mysql_query('SET NAMES utf8'); 
mysql_select_db("somedb",$con);
if($cmd =="GetAuctionData")
{
 $sql="SELECT * FROM AUCTIONS WHERE ARTICLE_NO ='$pk'";
 $sql2="SELECT ARTICLE_DESC FROM AUCTIONS WHERE ARTICLE_NO ='$pk'";
 $htmlset = mysql_query($sql2);
 $row2 = mysql_fetch_array($htmlset);
 $result = mysql_query($sql);
 while ($row = mysql_fetch_array($result))
 {
 $columns = array('FINISHED', 'WATCH', 'PRIVATE_AUCTION', 'REVISED', 'PAYPAL_ACCEPT', 'PRE_TERMINATED', 'PIC_XXL', 'PIC_DIASHOW');
 foreach($columns as $column)
 {
 $$column = $row[$column]? 'YES' : 'NO';
 }
 $lastImg = $row['PIC_URL']; 
 $maxWidth = 250;
 $maxHeight = 300;
 $size = getimagesize($_SERVER['DOCUMENT_ROOT']. $lastImg);
var_dump($size);
echo"SIZE =".$size."";
if ($size) {
 $imageWidth = $size[0];
 $imageHeight = $size[1];
 $wRatio = $imageWidth/$maxWidth;
 $hRatio = $imageHeight/$maxHeight;
 $maxRatio = max($wRatio, $hRatio);
else {
die(print_r(error_get_last())); }
else if ($maxRatio> 1) {
 $outputWidth = $imageWidth/$maxRatio;
 $outputHeight = $imageHeight/$maxRatio;
 } else {
 $outputWidth = $imageWidth;
 $outputHeight = $imageHeight;
 }
}
 echo"<h1>".$row['ARTICLE_NAME']."</h1>
 <div id='rightlayer'>
 <img src='".$lastImg."' width='".$outputWidth."' height='".$outputHeight."'>
 </div>";
 }
}
mysql_free_result($result);
时间:原作者:10个回答

0 0

首先,要获得正确的错误信息,请将代码更改为:

$size = getimagesize($lastImg);
echo"SIZE =".$size."";
if ($size) {
 $imageWidth = $size[0];
 $imageHeight = $size[1];
 $wRatio = $imageWidth/$maxWidth;
 $hRatio = $imageHeight/$maxHeight;
 $maxRatio = max($wRatio, $hRatio);
 if ($maxRatio> 1) {
 $outputWidth = $imageWidth/$maxRatio;
 $outputHeight = $imageHeight/$maxRatio;
 } else {
 $outputWidth = $imageWidth;
 $outputHeight = $imageHeight;
 }
} else {
 die(print_r(error_get_last()));
}

然后,我们可以查看错误并尝试进一步研究。

原作者:
0 0

第一。做一个

print_r($row)

你的正下方

while ($row = mysql_fetch_array($result))

看看 array PIC_URL是不是在那里

第二你应该做一个安全的查询。

$sql="SELECT * FROM AUCTIONS WHERE ARTICLE_NO ='$pk'";

应该是

$sql = sprintf("SELECT * FROM AUCTIONS WHERE ARTICLE_NO = %d", mysql_real_escape_string($pk));

其他SQL查询相同。

原作者:
0 0

你有一些与彼此冲突的事情:

$size = getimagesize($lastImg);
echo"<img src='".$lastImg."'.. .>"

getimagesize 需要文件名,而 <img> 需要一个 URL 。

你可以尝试这样的方式:

$root = str_replace($_SERVER['SCRIPT_NAME'], '', $_SERVER['SCRIPT_FILENAME']);
$size = getimagesize($root. $lastImg);

[ EDIT ] 抱歉,DOCUMENT_ROOT 不对。

原作者:
...