2012-02-12 61 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>