2017-03-14 127 views
1

我正在嘗試查詢SQL Server數據庫並在屏幕上返回結果。我的頁面按其應該加載,但是當我按下按鈕來查詢SQL Server時,如果我查看控制檯,它會顯示500錯誤。PHP拋出500錯誤

我需要更改哪些內容才能根據需要在屏幕上返回有效結果?

<select name="peopleinfo[]" multiple style="min-width: 200px;" id="peopleinfo"> 
    <option value="red">Red</option> 
    <option value="blue">Blue</option> 
</select> 
<div><input type="submit" value="Submit" id="ajaxButton" onclick="ReturnIt()"></div> 
    <div id="result_data"></div> 
<script> 
    function ReturnIt(){ 
    var peopleinfo = $('#peopleinfo').val(); 
    jQuery.ajax({    
       url: "", 
       type: 'POST', 
       dataType: "html", 
       data: { peopleinfo: peopleinfo }, 
       success : function(result) { 
        $('#result_data').empty(); 
        $('#result_data').append(result); 
       } , 
       error: function(){ 

       } 
     }); 
    } 
    </script> 
    $peopleinfo = implode(',',$_REQUEST['peopleinfo']); 
    $option = array(); //prevent problems 

    $option['driver'] = 'mssql';   // Database driver name 
    $option['host']  = 'Lockwood'; // Database host name 
    $option['user']  = 'root';  // User for database authentication 
    $option['password'] = 'sa'; // Password for database authentication 
    $option['database'] = 'test';  // Database name 
    $option['prefix'] = '';    // Database prefix (may be empty) 

    $db = JDatabase::getInstance($option); 
    $result = $db->getQuery(true); 
    $result->select($db->quoteName(array(".$peopleinfo."))); 
    $result->from($db->quoteName('[redheadstepchild]')); 
    $db->setQuery($result); 
    $row = $db->loadRowList(); 
    print_r($row); 

編輯
這就是開發者控制檯中顯示
在這條線jquery-1.12.4.js:10254

一個錯誤,這是實際的語法,當我點擊

// Do send the request 
// This may raise an exception which is actually 
// handled in jQuery.ajax (so no try/catch here) 
xhr.send((options.hasContent && options.data) || null); 
+0

該錯誤的原因應該在你的HTTP服務器的錯誤日誌 – Phil

+0

顯示我沒有對服務器的訪問日誌:0( – IcyPopTarts

+1

是這個代碼運行在Joomla環境或Joomla環境之外,如果在Joomla環境中運行,那麼爲什麼又要提供數據庫細節,爲什麼不使用'$ db = JFactory :: getDbo();'從哪裏得到這個'[redheadstepchild ]'。 –

回答

0

你好,我做了一個模塊來完成你在做什麼,它運作良好。我會把這個例子放在這裏可以幫助你。

模塊:

<?php 
defined('_JEXEC') or die; 

include_once __DIR__ . '/helper.php'; 

// Instantiate global document object 
$doc = JFactory::getDocument(); 

$js = <<<JS 
(function ($) { 
    $(document).on('click', 'input[type=submit]', function() { 
     var value = $('input[name=data]').val(), 
      request = { 
        'option' : 'com_ajax', 
        'module' : 'ajax_search', 
        'data' : value, 
        'format' : 'raw' 
       }; 
     $.ajax({ 
      type : 'POST', 
      data : request, 
      success: function (response) { 
       $('.search-results').html(response); 
      } 
     }); 
     return false; 
    }); 
})(jQuery) 
JS; 

$doc->addScriptDeclaration($js); 

require JModuleHelper::getLayoutPath('mod_ajax_search'); 
?> 

助手:

<?php 
defined('_JEXEC') or die; 

class modAjaxSearchHelper 
{ 
    public static function getAjax() 
    { 
     include_once JPATH_ROOT . '/components/com_content/helpers/route.php'; 

     $input = JFactory::getApplication()->input; 
     $data = $input->get('data', '', 'string'); 

$db = JFactory::getDbo(); 
     $query = $db->getQuery(true); 


     // Build the query 
     $query 
      ->select($db->quoteName(array('id','name','email'))) 
      ->from($db->quoteName('#__banner_clients')) 
      ->where($db->quoteName('name') . ' LIKE '. $db->quote('%' . $data . '%')); 
      //->order('id ASC'); 


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


     // Get output 
     $output = null; 

     foreach($results as $result){ 
      $output .= '<h4><a href="' . ContentHelperRoute::getArticleRoute($result->id, $result->email) . '">' . $result->name . '</a></h4>'; 
     } 

     if($output == null or empty($data)) 
     { 
      $output = 'Sorry! No results for your search.'; 
     } 

     return $output; 
    } 
} 
?> 
0

我有添加了一個try和catch異常,這將返回與您的查詢

$peopleinfo = implode(',',$_REQUEST['peopleinfo']); 
$option = array(); //prevent problems 

$option['driver'] = 'mssql';   // Database driver name 
$option['host']  = 'Lockwood'; // Database host name 
$option['user']  = 'root';  // User for database authentication 
$option['password'] = 'sa'; // Password for database authentication 
$option['database'] = 'test';  // Database name 
$option['prefix'] = '';    // Database prefix (may be empty) 

try{ 
$db = JDatabase::getInstance($option); 
$result = $db->getQuery(true); 
$result->select($db->quoteName(array(".$peopleinfo."))); 
$result->from($db->quoteName('[redheadstepchild]')); 
$db->setQuery($result); 
}catch(Exception $e){ 
echo $e->getMessage(); 
} 
$row = $db->loadRowList(); 
print_r($row); 
+0

屏幕上沒有錯誤回顯。如果我打開開發控制檯它只顯示500錯誤。 – IcyPopTarts