2014-10-04 30 views
-2

我知道Mysql沒有被明顯的原因所優先考慮,但這不是我決定繼續使用它。PHP SQL - 需要隔離,因爲它會影響頁面的其餘部分

<?php 

if (!mysql_select_db('dobhost_databaseexamplename', $con)) { 
    echo 'Could not select database'; 
    exit; 
} 

$sql = ("SELECT * FROM sections WHERE recid = '" .$page. "'"); 
$result = mysql_query($sql, $con); 

if (!$result) { 
    echo "DB Error, could not query the database\n"; 
    echo 'MySQL Error: ' . mysql_error(); 
    exit; 
} 

while ($row = mysql_fetch_assoc($result)) { 
?> 
<title>Carpets - <?php echo $row['title'];?></title> 
<meta name="description" content="<?php echo $row['descr'];?>" /> 
<meta name="keywords" content="<?php echo $row['keywords'];?>" /> 
<?php 
} 

mysql_free_result($result); 
?> 

此代碼工作正常,爲包括其數據庫連接設置其他地方,但是這一切工作正常,唯一的問題是,當我把它給到模板頭,它打破它下面所有的PHP代碼 - 有什麼辦法來隔離我的查詢和PHP回聲,以便它們不會影響下面的內容?

非常感謝!

+0

你收到任何錯誤訊息?或者你是否看到下面的php沒有輸出?另外我會關閉數據庫連接,如果你不需要它了,用下面的命令:mysql_close($ con); – Rizier123 2014-10-04 19:00:22

+0

「Mysql不是因爲顯而易見的原因而被優先選擇」的顯而易見的原因是什麼? – ONOZ 2014-10-04 19:03:13

+0

@ONOZ安全性和它已被棄用的事實,將被從PHP中刪除。 – JimL 2014-10-04 19:05:51

回答

0

將它包裝在一個函數中,您可能正在定義變量,這些變量稍後會在另一個腳本中使用。

此外,循環可能是一個壞主意,你可能會得到多個標題元素。

echo 'Could not select database'; 
exit; 

這是太糟糕,只是拋出這樣一個異常:throw new \Exception('Could not select database');

<?php 
function getMetaTags($pageId) { 
    global $con; 

    if (!mysql_select_db('dobhost_databaseexamplename', $con)) { 
     throw \Exception('Error selecting db'); 
    } 

    $sql = (sprintf("SELECT * FROM sections WHERE recid = %d", $pageId)); 
    $result = mysql_query($sql, $con); 

    if (!$result) { 
     throw new \Exception(mysql_error(), mysql_errno()); 
    } 

    if(!$row = mysql_fetch_assoc($result)) { 
     throw new \Exception(sprintf('Page with id %d not found', $pageId); 
    } 

    return sprintf('<title>Carpets - %s</title> 
     <meta name="description" content="%s" /> 
     <meta name="keywords" content="%s" />', $row['title'], $row['descr'], $row['keywords']); 
    } 
} 
+0

感謝您的建議!雖然我不知道該怎麼做。 我會給這個嘗試:http://stackoverflow.com/questions/11719362/how-to-wrap-php-code-inside-a-function - 如果這是你的建議? :) – 2014-10-04 19:28:55

+0

只需調用'echo getMetaTags(somePageId);'在你的腦海中 – 2014-10-04 19:44:59

+0

感謝您的幫助Fre Akus! - 但該代碼似乎有17和24行的語法錯誤,當我把它放在頁面中,它似乎停止發生的所有輸出:( 此外,我應該提到$ page是在每個頁面(選擇1,2或3),所以我的索引包括: $ page ='1'; 再次感謝! – 2014-10-04 20:12:02

相關問題