数据库连接不起作用

时间:2012-02-12 02:12:13

标签: php mysql

<?
$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”);

该文件具有与此相同的代码,但不同的变量名称和子串部分不存在。我不认为这会干扰这段代码。

3 个答案:

答案 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 WorkbenchphpMyAdmin - 您是否看到了正确的结果?

答案 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>