2014-03-04 51 views
2

我有一個外部的PHP腳本和我做使用PDO這樣的查詢訪問數據庫:的Joomla 3.1:從外部PHP

try 
{ 
    $dbh = new PDO("mysql:host=$hostname;dbname=$db", $username, $password); 
    $sql = "SELECT * FROM $table WHERE userName=:userName"; 
    $stmt = $dbh->prepare($sql); 
    $stmt->bindParam(':userName', $userName); 
    $stmt->execute(); 
    $rows = $stmt->fetchAll(PDO::FETCH_ASSOC); 
    $dbh = null; 
} 
catch(PDOException $e) 
{ 
    echo $e->getMessage(); 
} 

由於我是新來的Joomla/PHP,我不知道如果這是一個很好的做法。 我目前的安裝有沒有安全風險? 我剛剛發現可以在外部腳本中使用JFactory,但我只想 想知道在我的情況下更改爲JFactory是必須的,還是我可以堅持使用PDO?

+0

'$ hostname','$ db'和'$ table'變量來自哪裏?如果有人可以編輯他們的價值觀,那麼你將會陷入困境。 – Lucio

+0

http://stackoverflow.com/questions/9459430/include-jfactory-class-in-an-external-php-file-joomla – Techie

+0

嗨@Lucio,它在try-catch語句之前被定義(硬編碼)。我應該用不同的方式來定義它嗎?謝謝 – cottoncandy89

回答

2

試試這個,

define('_JEXEC', 1); 
define('JPATH_BASE', dirname(__FILE__));//this is when we are in the root,means path to Joomla installation 
define('DS', DIRECTORY_SEPARATOR); 

require_once (JPATH_BASE .DS.'includes'.DS.'defines.php'); 
require_once (JPATH_BASE .DS.'includes'.DS.'framework.php'); 

$app = JFactory::getApplication('site'); 
$app->initialise(); 
$db = JFactory::getDBO();// Joomla database object 

更多關於Joomla database使用,select operation

這比明確提供數據庫名稱和主機名稱要好得多。

希望它有道理..

+1

+1保持這個簡單和乾淨 – Techie

+0

感謝您的及時回覆。我想知道是否可以堅持使用PDO,還是必須使用可用的框架。 – cottoncandy89

+0

當你使用Joomla時,你必須使用框架標準而不是顯式連接。 Joomla支持許多PDO操作也檢查這個http://stackoverflow.com/questions/15812065/joomla-database-methods –