在XP和2003下一切正常,可是在freebsd下却不能运行。
任何sql语句都不能正常运行了。

解决方案 »

  1.   

    数据库问题
    php配置问题。
    建议查一下错误日志。
      

  2.   

    这是我写的简单的类class Mysql {
    private $link;
    private $dbcharset = "utf8";
    private $tablepre = "hsh_";
    function __construct($dbhost,$dbuser,$dbpass,$dbname,$dbchar,$tablepre){
    $this->doConnect($dbhost,$dbuser,$dbpass,$dbname);
    $this->dbcharset =  $dbchar;
    $this->tablepre = $tablepre;
    }
    private function doConnect($dbhost,$dbuser,$dbpass,$dbname){
    $this->link = @mysql_connect($dbhost,$dbuser,$dbpass) or halt("Can\'t Connect MySQL Server (".$dbhost.")!");
    $this->doSelect($dbname);
    }
    private function doSelect($dbname){
    mysql_select_db($dbname,$this->link) or halt("Can\'t select MySQL database ($dbname)!");
    $this->doCharset();
    }
    private function doCharset(){
    mysql_query("SET NAMES ".$this->dbcharset."");
    }
    private function doQuery($sql,$type=""){
    if($this->tablepre !== "ews_"){
    $sql = str_replace("ews_",$this->tablepre,$sql);
    }
    return mysql_query($sql,$this->link);
    }

    public function getOne($sql,$result_type=MYSQL_ASSOC){
    $result = $this->doQuery($sql);
    $row = mysql_fetch_array($this->doQuery($sql),$result_type);
    return $row;
    }
    //释放当前类所占用的内存并关闭当前数据连接
    function __destruct(){
    @mysql_free_result();
    @mysql_close($this->link);
    }
    }
    这是我的php语句//载入数据库类库文件并实例化
    @require_once("mysql.class.php");
    $db = new Mysql(DB_HOST,DB_USER,DB_PASS,DB_NAME,DB_CHAR,TB_PRE);
    $res = $db->getOne('SELECT * FROM `ews_admin` WHERE username="'.$user.'" and password = "'.$pass.'"');
    是代码写的有问题还是?数据库的配置有问题?
      

  3.   

    执行后有什么错误没?
    可以看一下php的错误日志。
      

  4.   

    执行后echo资源获取不到资源号。
      

  5.   

    require_once(BASE_URI."/include/mysql.cls.php");$mysql = new Mysql(DB_HOST,DB_USER,DB_PASS,DB_NAME,DB_CHAR,TB_PRE);
    $user = "admin";
    $pass = md5("admin");
    $sql = "SELECT * FROM `ews_admin` WHERE username='".$user."' and password = '".$pass."'";$result = mysql_query($sql);$rows = mysql_fetch_array($result,"MYSQL_ASSOC");if(is_array($row)){
    echo "ok";
    }else{
    echo "error";
    }这样返回的是ok,可是数据库中明明有数据,而且sql语句也匹配了一条记录,但print_r($row)却得到的是空数组。
      

  6.   

    服务器上用的PHP版本是什么?
      

  7.   

    bool(false) 
    输出的是这个错误
      

  8.   

    装个phpmyadmin,把你的SQL语句放里面执行看看结果。
      

  9.   

    在phpmyadmin中执行下面sql语句
    SELECT * FROM `ews_admin` WHERE username="admin" and password = "21232f297a57a5a743894a0e4a801fc3"得出结果为id  username  password  regip  loginip  dateline  updatetime  
     1 admin 21232f297a57a5a743894a0e4a801fc3 127.0.0.1 127.0.0.1 1276225044 1279272187明显结果中是含有一条记录的
    可是使用下面程序
    $dbhost = 'localhost';
    $dbuser = 'root';
    $dbpass = 'root';
    $dbname = 'mydb';
    $dbchar = 'utf8';
    $link  = mysql_connect($dbhost,$dbuser,$dbpass) or die('Could not connect: ' . mysql_error());
    mysql_select_db($dbname,$link) or die ('Can\'t use '.$dbname.' : ' . mysql_error());
    mysql_query("SET NAMES ".$dbchar,$link) or die("Invalid query: " . mysql_error());
    $sql = 'SELECT * FROM `ews_admin` WHERE username="admin" and password = "21232f297a57a5a743894a0e4a801fc3"';
    $result = mysql_query($sql);
    $rows = mysql_fetch_array($result,"MYSQL_ASSOC");
    var_dump($rows);
    mysql_close($link);
    从上面我们可以看到有一条结果是匹配的,但这里使用var_dump得到的结果却是
    array(0) { } 
    我初步分析,出问题的话会不会出在mysql_fetch_array这个函数上呢?
      

  10.   

    郁闷,我换成mysql_fetch_row函数,就可以正确读出数据来了。服务器上的php版本和我本地的php版本都是php 5.2.6的,怎么mysql_fetch_array函数就无效了呢?
      

  11.   

    如果销毁了结果集的话,那么使用mysql_fetch_row也应该返回空数组才对呀PHP如果mysql_fetch_array函数无效的话,应该怎么改配置文件让他支持呢
      

  12.   

    $rows = mysql_fetch_array($result,"MYSQL_ASSOC");
    改成$rows = mysql_fetch_array($result,MYSQL_ASSOC);