2014-09-05 121 views
0

Okai,所以我的問題是我的一個URL得到無效,因爲我的SQL表輸出一個空格在執行URL字符串之前和之後。 我添加了一些圖片和一些代碼的指導。MySQL Varchar類型輸出開始/結束空格

<a href=".."> 
    <img src="../ 
     <?php 
      $fetchheader = $db->prepare("SELECT background FROM header ORDER BY id DESC"); 
      $fetchheader->execute(); 
      $headerall = $fetchheader->fetchAll(); 
      $fetchheader->execute(); 
      echo $headerall[0]['background']; 
     ?> 
    "> 
</a> 

這裏有一些圖片藏漢說明問題:

在這裏你可以看到,類型設置爲VARCHAR: Here you can see that the type is set to varchar

在這裏你可以看到,該網站使輸出錯誤: Here you can see the output error on the website Error

+4

只是一個側面說明了空白:嘗試在主題輸出前完成所有變量。您可以編寫更緊湊,更易於閱讀的代碼,例如'print''' – Paul 2014-09-05 12:48:28

+1

+1 ^^^絕對同意保羅的評論^^^。你將有很多代碼用於任何其他圖像/'href',如果以後是這樣的話。 – 2014-09-05 12:54:40

+0

旁註:一個暗示的方法是使用'WHERE'子句並首先從數據庫中獲取數據,爲其分配一個變量。這樣,你可以輕鬆地改變你的背景。通過創建一個列和多行的新表。 I.e .:'「選擇背景從img_backgrounds WHERE background ='bg_1'」'然後您可以將'bg_1'改爲'bg_2'。 – 2014-09-05 13:07:32

回答

3

你已經離開了HTML和之間的空白空間/?>,什麼是你有你的圖像路徑原因,所以你應該刪除這些空格:

<img src="../<?php 
     $fetchheader = $db->prepare("SELECT background FROM header ORDER BY id DESC"); 
     $fetchheader->execute(); 
     $headerall = $fetchheader->fetchAll(); 
     $fetchheader->execute(); // <-- probably this is not necessary :) 
     echo $headerall[0]['background']; 
    ?>"> 
+0

它可能會更好地回顯出整個圖像元素。那麼代碼可以重構,但是你喜歡。 – Collett89 2014-09-05 12:49:30

+1

我同意你的意見。但問題是爲什麼他在他的形象路徑中有空間,所以它:)。 – 2014-09-05 12:51:03

+0

你絕對解決了這個問題 - 真的只是一個附註...和保羅給了非常類似的評論 – Collett89 2014-09-05 12:52:27

0

你能試試嗎?

使用TRIM(),以除去不需要的空間在PHP

$background=trim($headerall[0]['background']); 

$background=$headerall[0]['background']; preg_replace('/\s+/', '', $background); 

如果你想更換MYSQL

UPDATE `table` SET `col_name` = REPLACE(`col_name` , ' ' , '') 
+2

它不會解決問題。問題在於HTML而不是PHP。 – 2014-09-05 13:00:04