2017-03-14 28 views
1

SQL Server 데이터베이스를 쿼리하고 화면에 결과를 반환하려고합니다. 내 페이지를로드해야하지만 콘솔을 보면 SQL Server 쿼리 단추를 누르면 500 오류가 표시됩니다.PHP가 500 오류를 throw합니다

필요한 결과가 화면에 표시되도록하려면 무엇을 변경해야합니까?

<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); 

편집
이 dev에 콘솔이
이 줄 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

내가 서버 로그에 대한 액세스 권한이없는 : 0 ( – Phil

+0

에 표시한다

<?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; } } ?> 
IcyPopTarts

+1

인가 이 코드는 Joomla 환경 또는 Joomla 환경 외부에서 실행됩니다 .Joomla env 내부에서 실행중인 경우 왜 데이터베이스 정보를 다시 제공합니까? 대신 $ 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'); 
?> 

도우미 :

이 오류의 원인은 HTTP 서버의 오류 로그
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