2013-10-13 53 views
-1

我使用下面的查詢與服務器設置爲Joomla的mysql相當成功,但無法使用joomla Fabrik擴展中的設置作爲mysqli運行。mysql查詢轉換爲mysqli

$db = JFactory::getDbo(); 
$query = $db->getQuery(true); 
$sql = mysql_query("SELECT first_name,mobile FROM students WHERE 
DAY(dob) = DAY(CURDATE()) AND 
MONTH(dob) = MONTH(CURDATE())"); 

while($row = mysql_fetch_array($sql)) { 
//mycode- to - send SMS 
    } 

我已經修改了的mysqli上面的代碼,如下面沒有成功:

$db = JFactory::getDbo(); 
$query = $db->getQuery(true); 
$sql = mysqli_query("SELECT first_name,mobile FROM students WHERE 
DAY(dob) = DAY(CURDATE()) AND 
MONTH(dob) = MONTH(CURDATE())"); 

while($row = mysqli_fetch_array($sql)) { 
//mycode- to - send SMS 
    } 

我需要什麼樣的改變在上面的查詢作出這樣我就可以使用mysqli的設置使用它。

謝謝。

+0

$查詢變量是什麼? –

回答

2

Joomla有它自己的數據庫類,所以你不需要使用像mysqli_*這樣的喜歡。沿着以下線使用的東西:由Lodder

http://docs.joomla.org/Selecting_data_using_JDatabase

+0

謝謝,我會嘗試一下你的建議,但是如何在Joomla中使用mysql的服務器設置,myquery的第一部分工作得很好。 – Joshi

+0

你是否改變了Joomla後端全局配置中的數據庫類型來使用** mysqli **?無論哪種方式,你都不應該使用這個代碼。 ** mysql _ ***已被棄用,Joomla擁有自己的數據庫查詢類,可以滿足這類需求 – Lodder

0

我已經修改了查詢部分根據建議:

$db = JFactory::getDbo(); 

$query = $db->getQuery(true); 

$query->select($db->quoteName(array('first_name', 'mobile'))); 
->from($db->quoteName('#__students')) 
->where($db->quoteName('DAY(dob) = DAY(CURDATE())' AND 'MONTH(dob) = MONTH(CURDATE())')); 

$db->setQuery($query); 

$results = $db->loadObjectList(); 

foreach ($results as $result) { 
    your code here 
} 

對於的Joomla數據庫查詢的詳細信息,請閱讀本。我的最終查詢看起來是這樣的:

$db = JFactory::getDbo(); 
$query = $db->getQuery(true); 
$query = "SELECT SUBSTRING_INDEX(name,' ',1)first_name,mobile FROM students WHERE 
DAY(dob) = DAY(CURDATE()) AND 
MONTH(dob) = MONTH(CURDATE())"; 

$db->setQuery($query); 
$results = $db->loadObjectList(); 


foreach ($results as $result) { 
$mobile = $result->mobile; 
$name = $result->first_name; 

//further code 
}