2017-09-13 10 views
1

MSSQLサーバーに接続してもクエリが返されません - echo $sql;ステートメントを使用した場合、返されたすべての文はArrayなので、構文の問題もチェックできません!PHP SQLステートメント

3つのwhere文がすべて実行されるように、この構文をどのように修正する必要がありますか?

<select name="employee" id="employee"></select> 
$option = array(); 
$option['driver'] = 'mssql'; 
$option['host'] = 'IP ADDRESS'; 
$option['user'] = 'USER'; 
$option['password'] = 'Pass'; 
$option['database'] = 'DB'; 
$option['prefix'] = ''; 
$db = JDatabase::getInstance($option); 
$query = $db->getQuery(true); 
$query->select($db->quotename(array('Red,Blue,Green'))); 
$query->from($db->quoteName('EMS')); 
$datefield_name = $db->quoteName('TermDate'); 
$employee_name = $db->quoteName('employee'); 
$query->where("$datefield_name >= " . $db->quote($d1), 'AND'); 
$query->where("$datefield_name <= " . $db->quote($d2)); 
if ($employeename != 'All') { 
    $query->where("$employee_name <= " . $db->quote($employee)); 
} 
$db->setQuery($query); 
echo $query; 
$query = $db->loadObjectList(); 
+0

してみてください。あなたがクラスの構造を適切に使用していることを知らないと、私たちはあなたを助けることができません。私たちはそのデータベースクラスを手助けする必要があります。また、$ sqlという名前の変数は表示されません。 $ queryを意味するならば、var_export($ query)を使って、それが何であるか把握してください。しかし、$ queryは$ dbのインスタンスであり、それをデータベースインスタンスに戻します。あなたのデータベースクラスが必要です。 – tdoggy

答えて

0

私は、MSSQLで何の専門家だが、私の第一印象はあなたのどこ-文に引用符内部のあなたの変数を含めるべきではないということです。だからではなく、

$query->where("$datefield_name <= " . $db->quote($d2)); 

のあなたは明確に構築されたデータベースクラスのいくつかのタイプを使用している

$query->where($datefield_name . " <= " . $db->quote($d2)); 
+0

"適切な"構文ではないかもしれませんが、Joomlaの他のいくつかの記事でそれを実行し、期待どおりに動作します。 – BellHopByDayAmetuerCoderByNigh