在windows下编写的php程序怎么在freebsd下不能运行了呢? 在XP和2003下一切正常,可是在freebsd下却不能运行。任何sql语句都不能正常运行了。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 数据库问题php配置问题。建议查一下错误日志。 这是我写的简单的类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.'"');是代码写的有问题还是?数据库的配置有问题? 执行后有什么错误没?可以看一下php的错误日志。 执行后echo资源获取不到资源号。 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)却得到的是空数组。 服务器上用的PHP版本是什么? bool(false) 输出的是这个错误 装个phpmyadmin,把你的SQL语句放里面执行看看结果。 在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这个函数上呢? 郁闷,我换成mysql_fetch_row函数,就可以正确读出数据来了。服务器上的php版本和我本地的php版本都是php 5.2.6的,怎么mysql_fetch_array函数就无效了呢? 如果销毁了结果集的话,那么使用mysql_fetch_row也应该返回空数组才对呀PHP如果mysql_fetch_array函数无效的话,应该怎么改配置文件让他支持呢 $rows = mysql_fetch_array($result,"MYSQL_ASSOC");改成$rows = mysql_fetch_array($result,MYSQL_ASSOC); wordpress图文幻灯片问题. 请教,php如何获取远程JSon内容 做一道猴子题,不知道错在哪,求帮看看.... 推荐一个极好的WEB报表控件ATGrid,能在线看到效果 怎样能读取这个文件啊 谢谢 jqgrid表格报错 PHP程序如何调用html文件?小白问题,求指导!! 为什么我的提交操作要点俩次才能执行亚,能帮我看看代码吗 请问,查询大量数据放在表格中显示出来时怎么减少显示时间?谢谢! 80分求query 关于short_open_tag的设置问题 PHP 时间函数问题
php配置问题。
建议查一下错误日志。
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.'"');
是代码写的有问题还是?数据库的配置有问题?
可以看一下php的错误日志。
$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)却得到的是空数组。
输出的是这个错误
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这个函数上呢?
改成$rows = mysql_fetch_array($result,MYSQL_ASSOC);