mysql串連成功但提示mysql_query未定義

來源:互聯網
上載者:User
mysql php

情景描述:
查詢兩台伺服器上的資料庫,提取使用者資料。
① 將資料列表顯示,已成功
getAddrPerson($_SESSION['uid']);//個人//個人通訊錄$dataPers = (empty($addrPersons['addrperson']))?array():json_decode(base64_decode($addrPersons['addrperson']),true);//$addrPersons  array();#擷取公司通訊錄$stafflists = $mysql->getDomainUserList($domain);$stafflists_ = $mysql_->getDomainUserList($domain);debug(count($stafflists));  //29debug(count($stafflists_)); //57

② 提供搜尋,在單獨的搜尋網頁再次提取兩台伺服器上的使用者資料,並根據關鍵詞進行過濾。
此時PHP終止,Fatal error: Call to undefined function mysql_query()

getAddrPerson($_SESSION['uid']);//個人$dataPers = (empty($addrPersons['addrperson']))?array():json_decode(base64_decode($addrPersons['addrperson']),true);//$addrPersons  null#擷取公司通訊錄$stafflists = $mysql->getDomainUserList($domain);//$stafflists_ = $othersql->getDomainUserList($domain);debug($stafflists);exit;//debug($stafflists_);


可能是哪一步出錯?


回複討論(解決方案)

在你貼出的代碼中,沒有看到 mysql_query
你只能根據錯誤資訊指示的行號排查錯誤

php代碼中資料庫的密碼要和電腦裡的資料庫中的密碼一樣

require_once (dirname(__FILE__) . "/../classes/mode/mysql_mode_class.php");require_once (dirname(__FILE__) . "/../classes/mode/mysql_list_class.php");//這兩行也有在header.php中包含//這兩個類中的執行函數是一樣的 class MySqlList {//sql paramspublic $server;public $username;public $password;public $database;public $code;function MySqlList(){global $webpost;//include("xmlparse.inc");$sqlist = parse_xml_config($webpost['path']['sqlist'],"sqlist");if(!empty($sqlist) && is_array($sqlist)){foreach($sqlist['list'] as $list){if(strcmp($list['server'],$_SERVER['SERVER_ADDR'])){$config = $list;}}//end for}//end ifif(empty($config))die("讀取MySql配置出錯。");$this->server = $config['server'];$this->username = $config['username'];$this->password = $config['password'];$this->database = $config['database'];} //connect sql function connect(){$connect = mysql_connect($this->server, $this->username, $this->password);if (!$connect){die("伺服器串連失敗:".mysql_error());}$conn = mysql_select_db($this->database,$connect) or die("資料庫連接失敗!
");mysql_query("set names utf8");return $connect;}//execute sqlfunction querySql($sql,$array=2,$fail=false,$succe=false,$suc_href=false,$type=MYSQL_ASSOC){ global $webpost;$result = mysql_query($sql,$this->connect()); //提示在這裡終止if(!$result) die("SQL: {$sql}
Error: " . mysql_error() );if (mysql_affected_rows() >0){//write_sys_log("success SQL:".$sql);switch($array){case 1:$arry = array();while($arr = @mysql_fetch_array($result,$type)){array_push($arry,$arr);}return $arry;case 2:$arr = @mysql_fetch_array($result,$type);return $arr;default:return 1;}}elseif(mysql_affected_rows() == 0 && !mysql_errno()){//write_sys_log("empty SQL:".$sql);return false;}elseif(mysql_errno()){//write_sys_log("failed SQL:".$sql);return 0;}mysql_close();}#擷取另一台資料庫的使用者資料 function getDomainUserList($domain){ $sql = "SELECT m.id,m.did,m.code,username,realname,domain FROM table_a m "."JOIN table_b d ON m.did=d.id WHERE domain='{$domain}'";return $this->querySql($sql,1); } }

思路上大概哪裡有問題?

除 mysql_query 外,其他 mysql 族函數均沒有報錯
只能說 mysql 擴充安裝(編譯)錯誤

但是,我在提取使用者資料後,是可以列表顯示的。
只是在單獨的搜尋網頁卻出現這個問題。

你提供的資訊太少
不排除個別應用中單詞拼字錯誤

終於排查出來了,是因為單獨的搜尋網頁沒有擷取到$_SESSION。
但是我加session_start()了,而且是由前面的列表頁,通過$.ajax擷取搜尋網頁的內容。
為什麼搜尋網頁的$_SESSION是空的?

在 $_SESSION 為空白的程式中檢查 get_included_files 返回的檔案清單

通常 session_start() 宜放在全域的公用檔案中
況且 php 5.4 還會檢查該函數是否被執行過,如執行過將會產生警告資訊

問題解決了。
原因:在搜尋網頁的包含頁中,header()和session_start()的位置搞錯了。把包含頁中的header注掉就好了。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.