2014-02-09 91 views
-3

我有一個連接到Mysql DB的函數,它在「正常」調用中工作得很好,但無法連接以響應ajax調用。php連接到mysql db在ajax調用後失敗

PHP代碼:

// return data to ShowDdl() 
    function getDDLdata($tablename) { 

    global $db; 
    $data = ''; 

    $name = ($tablename == 'sapak' || $tablename == 'cupon' ? 'Name' : 'Hebrewname'); 
    ////****** $db IS NOT RECOGNIZED WHEN CALLING ShowDdl() FROM AJAX 
    ////****** BUT WORKS GREAT IN NORMAL CALLS 
    $query = $db->select("SELECT `id` , `".$name."` AS name FROM `".$tablename."` ORDER BY `id` ASC"); 

    for($i=0;$result = $db->get_row($query, 'MYSQL_ASSOC');$i++){ 
     $data[$i] = $result; 
    } 

    return $data; // id, name 
} 

// echo ddl with current data from requested table 
    function ShowDdl($tablename, $sapakid = null) { 
     $possibletables = array (
      'category', 'subcategory', 'brand', 'sapak', 'cupon' 
    ); 

    $ddlname = ''; 

// find the correct name for the ddl  
for ($i = 0; $i<count($possibletables); $i++) {  

    if ($possibletables[$i] == $tablename) {    
     // only cupon ddl should have different id and name 
     if ($tablename == 'cupon') { 
      $ddlname = 'sapak-'.$sapakid .'-cupon'; 
     } 
     else { 
      $ddlname = 'product-' . $tablename; 
     } 

     continue; 
    }   
} 

echo '<select multiple id="'.$ddlname.'" name="'.$ddlname.'[]">'; 

$data = getDDLdata($tablename);  

foreach ($data as $vn) { 

    if ($vn['id'] != null) { 
     echo '     
      <option value="'.$vn['id'].'"> '.$vn['name'].' </option> 
      '; 
    } 
}  
echo '</select>';   

}

從 '正常' PHP調用時,它的偉大工程。

AJAX調用:

$.ajax({ 
     type: "GET", 
     url: 'moudels/product/generic_offer.php', 
     data: 'sid=' + sid + '&name=' + name,           
     success: function (data) { 
      $('<div id='+ sid + '> </div>').appendTo('#genericofferdiv'); 
      // append the response to the new div 
      $("#"+sid).html(data); 
     } 
    }); 

我得到這個錯誤:

Fatal error: Call to a member function select() on a non-object 

我敢肯定,這是因爲Ajax調用,也許它無法正確加載全局的$ DB變種。任何想法如何解決這個問題?

非常感謝您

*注:我知道,我使用mysqli,但整個項目是建立與此,我不能改變它

+2

凡'$ db'從何而來這裏...? – deceze

+0

您是否在文件的頂部包含$ db? – Yamaha32088

+0

它是所有項目中的全局變量。 –

回答

0

當你調用/包括從該文件在你的php項目中,你可能定義了全局變量$ db,並且可以在這個文件中訪問它。

但是,如果你從你的網站調用這個,所有的php已經通過並且沒有全局變量存在了... - >所以你必須包括f.e. config.php再次定義你的$ db變量!

的config.php:

$db = new mysqli(DB_HOST, DB_USER, DB_PW, DB_DB); 

yourFile.php

require_once('./config.php');