2012-02-12 86 views
0
<? 
$test1 = mysql_connect("localhost","username","pass"); 
if (!$test1) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 
mysql_select_db("database", $test1); 
$letter = $_SERVER[REQUEST_URI]; 
$letter1 = substr($letter,6); 
$query = "SELECT * FROM letter WHERE username='" . $letter1 . "'"; 
$result = mysql_query($query); 
$row = mysql_fetch_array($result); 
?> 

<style type="text/css"> 
body { 
    background-image: url('<? echo $row["backpic"]; ?>'); 
    background-attachment:fixed; 
    margin-bottom:36px; 
    } 
</style> 

这是我从mysql数据库中检索字段并将该字段设置为背景图像(该字段包含url)的代码。数据库连接不工作

出于某种原因,此代码不起作用。我已经检查了所有的值,并且它们应该是正确的,因为这个完全相同的代码存在于另一个文件中,并且它完美地工作在那里。

请帮忙!


没有生成错误。顺便说一下,在所有这些之前有一行代码:include(“connectval.php”);

那里有那个文件有相同的代码,但不同的变量名和子串部分不在那里。我不认为这会干扰这段代码。

+1

的是,从脚本生成什么错误? – 2012-02-12 02:14:51

+3

当我们被告知“它不起作用”时,它总是让我d but不安,但没有提供错误消息/代码/描述来解释*实际错误*。它不起作用;好。发生什么事?你有错误吗? – 2012-02-12 02:16:11

+0

没有产生错误。我甚至试图打印出应该从数据库中提取的字段,并且它不打印出来,而如果我做了类似echo“hello”的东西;它出于某种原因打印出你好$ row ['backpic'];没有任何价值。 – DemCodeLines 2012-02-12 02:20:40

回答

2

如果此代码在不同的文件中工作,但不是这一个,它可能是路径问题 - 数据库中的URL是完全限定还是相对的?

生成的HTML看起来像什么? 究竟是在数据库中?

步骤我跟着调试此:

(?!我用“它不工作”你的意思是你看不到的背景图像假设如果是这样,你应该明确)

  • 倒退 - 浏览器未显示图像。为什么?
  • 浏览器使用图像URL加载图像 - 它在页面源中是否正确?
  • 如果URL是正确的,请将其复制/粘贴到地址栏中 - 图像是否加载?
  • 如果不正确,请查看数据库中的内容并找出需要采取的措施以纠正它。

我的猜测是,在数据库URL的形式为:/Images/Image.jpg其工作正常时,PHP是沿着Images文件夹,但错了来自不同的文件夹加载时 - 尝试使他们完全合格的(http://www.example.com/Images/Image.jpg)。如果您无法更改数据库,请使用代码自行添加http://www.example.com

编辑:

至于建议由贾里德Farrish在OP评论:

尝试打印出来$query。将字符串复制/粘贴到MySQL WorkbenchphpMyAdmin - 您是否看到正确的结果?

+0

数据库包含用户值,如电子邮件,姓名,个人资料图片。 $行[ 'backpic'];应该有配置文件的图片值加载到它是一个图像的网址。其他一切都按照文件中的编码进行。这个文件只有一部分使用这个代码,当试图放在背景图片上时,所有其他的东西都能正常工作。 – DemCodeLines 2012-02-12 02:30:50

+0

你仍然没有回答这个问题:URL是什么样的?除非你能回答,否则我无法帮助你。是[绝对还是相对](http://www.compugoddess.com/relvsabs.htm)?如果右键单击页面并查看源代码,CSS块的外观如何?用答案编辑你的问题 – Basic 2012-02-12 02:33:06

+0

页面是否显示任何东西?或者它只是空白。如果它是空白的,你可能会在服务器配置中关闭PHP错误 - 检查服务器日志和php.ini设置。 – Basic 2012-02-12 02:34:17

1

您正试图输出不存在的变量$a951168545

您已将数据库查询的结果作为数组载入$row,因此您需要输出$row的索引。你可能应该在背景图像部分回显出来的是$row['backpic']

如果一切都失败,请插入行var_dump($row),该行将显示您的$row变量中正确加载的内容,并指出要显示要查找的值的操作。

+0

我搞砸了代码,而复制和粘贴它在这里,所以我确实有$ row ['backpic'];但它不起作用。 – DemCodeLines 2012-02-12 02:21:25

1

什么是<? echo $row["backpic"]; ?>输出?

试试这个:

<?php 
    // You can enable the report of all PHP errors using ONE of the 3 lines below 
    ini_set('error_reporting', E_ALL); 
    //error_reporting(E_ALL); 
    //error_reporting(-1); 


$myhost = "localhost"; 
$myuser = "myuser"; 
$mypwd = "mypassword"; 
$mydb = "mydatabase"; 
$mysqli = new mysqli($localhost, $myuser, $mypwd, $mydb); 

if ($mysqli->error) { 
    printf("Connection failed: %s\n", $mysqli->error()); 
    exit(); 
} 

$letter = $_SERVER[REQUEST_URI]; 
$letter1 = $mysqli->real_escape_string(substr($letter,6)); 
$query = sprintf("SELECT * FROM letter WHERE username = %d", $username); 
$result = $mysqli->query($query); 

// $row = $result->fetch_array(MYSQLI_NUM); //$row[0] 
// $row = $result->fetch_array(MYSQLI_ASSOC); //$row['field'] 
// $row = $result->fetch_array(MYSQLI_BOTH); //$row['field'], $row['0'] 
// $row = $result->fetch_assoc(); //$row['field'] 
$row = $result->fetch_object(); //$row->['field'] 

/*if($row > 0) : 
    printf ("<h2>%s (%s)</h2>", $row[0], $row['backpic']); 
endif;*/ 

$result->close(); 
$mysqli->close(); 
?> 

<style type="text/css"> 
body { 
    background-image: url('<?= $row->backpic; ?>'); 
    background-attachment:fixed; 
    margin-bottom:36px; 
    } 
</style>