简明现代魔法 -> PHP服务器脚本 -> 一个PHP文件包含的问题的解决

一个PHP文件包含的问题的解决

2010-06-17

一个PHP的收藏功能,需求是点一下就加入收藏夹,这里是通过Ajax传过来的一个值,首先将这个值与数据库比较,判断是否数据库中已经存在,如果存在的话就提示已经收藏过,如果没有的话则将改值写入数据库。

程序很简单,由两个函数组成:

<?php

session_start();
include_once("includes/nmdb.php");  

$favor = $_POST['favor_input'];

$check = checkFavor($favor);

if ( !isset($_SESSION['recycleruser']) ) 
{
	echo "错误:你需要登录后才能收藏";
}
else if ($check == false)
{
	echo "错误:您已经收藏过该商家";
}
else
{	
	addFavor($favor);
}

function addFavor($favor)
{
	//include_once("includes/nmdb.php");  
	include("includes/dbinfo.php"); 
	
	$connector = new nmdb($host, $username, $password);
	$connector -> select_db($database);

	$user = $_SESSION['recycleruser'];
	date_default_timezone_set('PRC');  
	$userdo_date = date('Y-m-d H:i:s');
	
	$query = "insert into userdo (user_name, userdo_favor, userdo_date) values ('$user', '$favor','$userdo_date') ";

	$add = $connector -> query($query) or die(mysql_error());
	if($add)
	{
		echo '收藏完成';
	}
	$connector -> close($connector);
}

function checkFavor($favor)
{
	//include_once("includes/nmdb.php");  
	include_once("includes/dbinfo.php"); 
	
	$connector = new nmdb($host, $username, $password);
	$connector -> select_db($database);
	
	$query = "select * from userdo where userdo_favor = '".$favor."'  ";
	$result = $connector -> query($query) or die(mysql_error());  

	$number = $connector -> num_rows( $connector -> query("select * from userdo where userdo_favor = '".$favor."' ") );

	$connector -> close($connector);
	if($number > 0)
	{
		return false;
	}
	else
		return true;
}

?>

问题是这样的,一开始,我把include_once("includes/nmdb.php"); 这个包含语句写入到函数体中,错误提示:no database selected。

include_once()函数会先检查要导入的档案是不是已经在该程序中的其它地方被导入过了,如果有的话就不会再次重复导入该档案(这项功能有时候是很重要的,比方说要导入的档案里面宣告了一些你自行定义好的函数,那么如果在同一个程序重复导入这个档案,在第二次导入的时候便会发生错误讯息,因为PHP不允许相同名称的函数被重复定义)。

也就是说,在执行checkFavor()的时候,已经将include_once("includes/nmdb.php")执行了,那么在addFavor()函数体内再包含的时候,其实这个语句不执行了。所以就产生了没办法选中数据库的错误了。解决方法也很简单,把include_once()语句放到函数体外就可以了。函数体内最好就不要使用include_once()了。

随机文章推荐
网站分类


注:如需转载本文,请注明出处(原文链接),谢谢。更多精彩内容,请进入简明现代魔法首页。

进入新博客
喜欢本文,就分享它吧
给我留言
您的名字:
您的邮件:
您的网站:


 

copyright © 2009 简明现代魔法    学习、分享、进步

power by Gonn 感谢所有关心和支持本站的朋友们