ホームページ >バックエンド開発 >PHPチュートリアル >Mysql 接続は成功しましたが、mysql_query が定義されていないことを示すプロンプトが表示されます
mysql php
シナリオの説明:<?php/* Filename[book.php] */require_once("header.php");#连接另一台数据库$mysql_ = new MySqlList();#获取通讯录$addrPersons= empty($_SESSION['uid'])?null:$mysql->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/* Filename[book_search.php] */date_default_timezone_set('PRC');Header("content=text/html; charset=UTF-8");session_start();require_once (dirname(__FILE__) . "/../classes/action/initialize.php");require_once (dirname(__FILE__) . "/../classes/mode/xmlparse.inc");require_once (dirname(__FILE__) . "/../classes/mode/mysql_mode_class.php");require_once (dirname(__FILE__) . "/../classes/mode/mysql_list_class.php");#连接本地数据库$mysql = new MySqlModeMail();#连接另一台数据库//$othersql = new MySqlList();#获取通讯录$addrPersons= empty($_SESSION['uid'])?null:$mysql->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 params public $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 if if(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("数据库连接失败!<br/>"); mysql_query("set names utf8"); return $connect; } //execute sql function 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} <br>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_include_files によって返されるファイルリストを確認します
通常、session_start() はグローバルパブリックファイルに配置されるはずです
さらに、php 5.4 は、関数が実行されたかどうかも確認します。警告メッセージが生成されます
問題は解決しました。
理由: 検索ページのインクルードページで、header() と session_start() の位置が間違っています。含まれているページのヘッダーをコメントアウトするだけです。