2013-10-13 58 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 
}