长话短说,我有一个项目需要根据数据库中的数据创建用户的头像。使用imagepng()和imagecopy()函数生成头像。
用户的头像可以是男性或女性,并且该偏好在SQL数据库中保存为“user_gender”列,其中“0”=女性,“1”=男性:
Screenshot of table in phpmyadmin
所以我们的想法是我们从数据库中获取数据,将值(0或1)赋给变量,然后使用该变量生成图像。请参阅以下代码:
<?php
//Database connection script not included, but works fine
$id = 1;
$sqlQuery = "SELECT * FROM table WHERE id = :id";
$statement = $db->prepare($sqlQuery);
$statement->execute(array(':id' => $id));
while($rs = $statement->fetch())
{
$gender = $rs['user_gender'];
}
if($gender == "0")
{
//Allocation of images, file paths
$bodytype ="images/female/f_body.png";
}
else
{
$bodytype ="images/male/f_body.png";
}
header('Content-Type: image/png');
$destination = imagecreatefrompng($bodytype);
imagealphablending($destination, true);
imagesavealpha($destination, true);
imagepng($destination);
?>
但是,此代码无效,因为它会在浏览器上显示空白黑页。
然而,这段代码没有从数据库中拉出来,完全没问题:
<?php
//taking out the sql query and just creating a $gender variable for testing
$gender = "0";
if($gender === 0)
{
$bodytype ="images/female/f_body.png";
}
else
{
$bodytype ="images/female/f_body.png";
}
header('Content-Type: image/png');
$destination = imagecreatefrompng($bodytype);
imagealphablending($destination, true);
imagesavealpha($destination, true);
imagepng($destination);
?>
这是第二个代码的输出,显示图像生成确实有效,问题很可能是从sql传递到php:
Working image generation in browser
如果从数据库中提取变量,我会非常感谢知道我做错了什么或被暗示为什么代码停止工作。
谢谢!
答案 0 :(得分:0)
我尝试了你的代码并遇到了同样的问题,所以我做了一些挖掘,发现没有从数据库返回任何内容,所以我所做的是在数据库名称前加上tablename并且它有效。见下面的代码
$gender = '';
$sqlQuery = "SELECT * FROM register.users WHERE id = :id";
$statement = $db->prepare($sqlQuery);
$statement->execute(array('id' => 1));
while($rs = $statement->fetch())
{
$gender = $rs['gender'];
}
if($gender == 0)
{
$bodytype ="images/female/f_body.png";
}
else if($gender == 1)
{
$bodytype ="images/male/m_body.png";
}
$destination = imagecreatefrompng($bodytype);
imagealphablending($destination, true);
imagesavealpha($destination, true);
header('Content-Type: image/png');
imagepng($destination);
尝试一下,让我知道它是怎么回事。