<?
$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”);
该文件具有与此相同的代码,但不同的变量名称和子串部分不存在。我不认为这会干扰这段代码。
答案 0 :(得分:2)
如果此代码在另一个文件中工作但不在此文件中,则可能是路径问题 - 数据库中的URL是完全限定的还是相对的?
生成的HTML是什么样的? 完全在数据库中是什么?
我将按照以下步骤进行调试:
(我假设“它不起作用”你的意思是你没有看到背景图像?如果是这样,你应该是明确的!)
我的猜测是数据库中的网址格式为:/Images/Image.jpg
,当PHP与Images
文件夹一起使用时效果正常但从其他文件夹加载时出错 - 尝试使其完全合格(http://www.example.com/Images/Image.jpg
)。如果您无法更改数据库,请在代码中自行添加http://www.example.com
。
修改强>
正如Jared Farrish对OP的评论中所建议的那样:
尝试打印$query
。将字符串复制/粘贴到MySQL Workbench或phpMyAdmin - 您是否看到了正确的结果?
答案 1 :(得分:1)
您正在尝试输出不存在的变量$a951168545
。
您已将数据库查询的结果作为数组加载到$row
中,因此您需要输出$row
的索引。您应该在背景图像部分回显的是$row['backpic']
。
如果所有其他方法都失败了,请插入行var_dump($row)
,它会准确显示正在加载到$row
变量中的内容,并指出您需要执行哪些操作才能显示您要查找的值
答案 2 :(得分: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>