2009年3月23日星期一

php函数跨页面引用失败failed!怎么办?(php与php页面之间函数引用失败!)

我在学习PHP制作的时候,制作了一个函数程序(三个文件index.php,../back/conn.php ,../back/function.php),各个程序的源码如下:

======================
页面index.php源码如下:
======================
<?php
session_start();
include_once("back/function.php");
viewer();
?>

==============================
../back/function.php的源码如下:
===============================

<?php
session_start();
function viewer(){ //记录访问者的,不管他有没有登陆,就直接插入数据库
if($_SESSION['vid']==""){
$vip=$_SERVER['REMOTE_ADDR'];
$inpage="http://".$_SERVER ['HTTP_HOST'].$_SERVER['PHP_SELF'];
$from=$_SERVER['HTTP_REFFER'];
$intime=date("Y-m-j H:i:s",time()+8*3600);
 
$sql="INSERT INTO viewer(vip,from,inpage,intime) VALUES('$vip','$from','$inpage','$intime')";
$a= include_once("conn.php"); if($a){echo "引入成功!";}//结果输出为"引入成功!"

$result=mysql_query("INSERT INTO liulangzhe(vip,from,inpage,intime) VALUES('".$vip."','".$from."','".$inpage."','".$intime."')");
 
if($result){
echo "插入成功!";
$_SESSION['vip']=mysql_insert_id();}else {echo "插入失败!";}//"这里既没有插入成功输出也没有插入失败输出!"
}
}
?>

===============================
../back/conn.php的源码如下:
===============================

<?php
$db=mysql_connect("localhost","root","5786");          //创建数据库连接
$select=mysql_select_db("cnread_news",$db);                //选择要操作的数据库
mysql_query("set names gb2312");
?>
=========================================
=========================================

但是在../back/function.php却始终是有错误,我很想知道错误是错在了哪里?
我的问题就是跨页面之间的函数如何的调用,为什么每次我都条用失败呢?
需要注意什么?

-----------------------------------------------------------------------------------------------------------
 
解决方法:
问题多了,echo 一下,然后放到sql里执行一下

或者查询后,echo mysql_error();
谢谢大家,后来好了,发现是value的类型没有对上~

mysql_num_rows()和mysql_affected_rows()的区别 用途

mysql_num_rows

(PHP 4, PHP 5, PECL mysql:1.0)

mysql_num_rows — 取得结果集中行的数目

说明

int mysql_num_rows ( resource $result )

mysql_num_rows() 返回结果集中行的数目。此命令仅对 SELECT 语句有效。要取得被 INSERT,UPDATE 或者 DELETE 查询所影响到的行的数目,用 mysql_affected_rows()

Example#1 mysql_num_rows() 例子

<?php

$link 
mysql_connect("localhost""mysql_user""mysql_password"
);
mysql_select_db("database"$link
);

$result mysql_query("SELECT * FROM table1"$link
);
$num_rows mysql_num_rows($result
);

echo 
"$num_rows Rows\n"
;

?>

Note: 如果使用 mysql_unbuffered_query(),则直到结果集中的所有行都被提取后 mysql_num_rows() 才能返回正确的值。

参见 mysql_affected_rows()mysql_connect()mysql_data_seek()mysql_select_db()mysql_query()

为向下兼容仍然可以使用 mysql_numrows(),但反对这样做。

http://cn.php.net/manual/zh/function.mysql-num-rows.php

mysql_affected_rows

(PHP 4, PHP 5, PECL mysql:1.0)

mysql_affected_rows — 取得前一次 MySQL 操作所影响的记录行数

说明

int mysql_affected_rows ([ resource $link_identifier ] )

取得最近一次与 link_identifier 关联的 INSERT,UPDATE 或 DELETE 查询所影响的记录行数。

参数

link_identifier

MySQL 的连接标识符。如果没有指定,默认使用最后被 mysql_connect() 打开的连接。如果没有找到该连接,函数会尝试调用 mysql_connect() 建立连接并使用它。如果发生意外,没有找到连接或无法建立连接,系统发出 E_WARNING 级别的警告信息。

返回值

执行成功则返回受影响的行的数目,如果最近一次查询失败的话,函数返回 -1。

如果最近一次操作是没有任何条件(WHERE)的 DELETE 查询,在表中所有的记录都会被删除,但本函数返回值在 4.1.2 版之前都为 0。

当使用 UPDATE 查询,MySQL 不会将原值和新值一样的列更新。这样使得 mysql_affected_rows() 函数返回值不一定就是查询条件所符合的记录数,只有真正被修改的记录数才会被返回。

REPLACE 语句首先删除具有相同主键的记录,然后插入一个新记录。本函数返回的是被删除的记录数加上被插入的记录数。

http://cn.php.net/manual/zh/function.mysql-affected-rows.php

 

mysql_result()分成的种类

mysql_result

(PHP 4, PHP 5, PECL mysql:1.0)

mysql_result — 取得结果数据

说明

mixed mysql_result ( resource $result , int $row [, mixed $field ] )

mysql_result() 返回 MySQL 结果集中一个单元的内容。字段参数可以是字段的偏移量或者字段名,或者是字段表点字段名(tablename.fieldname)。如果给列起了别名('select foo as bar from...'),则用别名替代列名。

当作用于很大的结果集时,应该考虑使用能够取得整行的函数(在下边指出)。这些函数在一次函数调用中返回了多个单元的内容,比 mysql_result() 快得多。此外注意在字段参数中指定数字偏移量比指定字段名或者 tablename.fieldname 要快得多。

调用 mysql_result() 不能和其它处理结果集的函数混合调用。

Example#1 mysql_result() 例子

<?php
    $link 
mysql_connect("localhost""mysql_user""mysql_password"
)
            or die(
"Could not connect: " mysql_error
());

    
$result mysql_query("SELECT name FROM work.employee"
)
            or die(
"Could not query: . mysql_error());

    echo mysql_result($result,2); // outputs third employee's name

    mysql_close($link);
?>

推荐使用高性能的替代函数:mysql_fetch_row()mysql_fetch_array()mysql_fetch_assoc()mysql_fetch_object()

PHP MySQL问题 left join 连select * from table_nem 都错误了 定界符 单引号

SQL code
select read.*,user.uname,category.cname from read left join user,category on read.uid=user.uid,read.cid=category.cid order by date desc limit 0,10


mysql中有三个表:
read
category
user

表read中有uid,cid和rid,rdate
表category中有cid,cname
表user中有uid,uname

现在就是要从read中选出所有的,但是要知道uid对应的uname,但是read表中只有uid,没有uname;还要获得cname,但是read表中只有cid,没有cname。
如何才可以选出来呢?


另外的就是我的一个SQL语句竟然是错误的:

SQL code
select * from read


显示的错误是如下的:

HTML code
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\newread.php on line 13


我的PHP代码是这样的:
PHP code
include_once("back/conn.php"); $query4="select count(*) as total from read"; echo $query4; $result4=mysql_query($query4); $totalnum=mysql_num_rows($result4);//总记录数为$totalnum


我该怎末做才可以选出呢?
另外我的这个代码是错误在了哪里呢?

----------------------------------------------------------------
 
 
解决办法:
SQL code
SELECT `read`.*,`user`.`uname`,`category`.`cname` FROM `read` LEFT JOIN `user` ON(`read`.`uid`=`user`.`uid`) LEFT JOIN `category` ON(`read`.`cid`=`category`.`cid`) LIMIT 0,10
 
read是保留关键字.加界定符就行了.我刚刚都忽略了这一点.
注意养成好的习惯.表和字段都加上界定符.
定界符就是ESC下面的那个符号,还有就是英文状态下的单引号!
 

php mysql mysql_fetch_array当结果不存在的时候 当结果为空的时候

HTML code
Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 6 in C:\AppServ\www\back\class\class.read.php on line 137



下面这个就是在第137行:

PHP code
//====================输出 单个文章 的 页面标题 =======================     
function readtitle()     {         if(!is_numeric($this->rid)){         echo "<center>对不起!网址中的ID必须为整数!<br>".__BACK__."</center>";         exit;         }         $query_pagetitle="select `rtitle` from `read` where `rid`=".$this->rid;         $result_pagetitle=mysql_query($query_pagetitle);     if($result_pagetitle==false){                  $pagetitle="文章不存在!出错了!";              }else{         $pagetitle=mysql_result($result_pagetitle,0,"rtitle");//[b]这个是第137行[/b]         $pagetitle=htmlspecialchars($pagetitle);         $updatehit=new read($this->rid,'','','','');         $updatehit->updatehit();     }         return $pagetitle;     }


实际上总共三种情况

PHP code (正确的解答)
$query_pagetitle="select `rtitle` from `read` where `rid`=".$this->rid; $result_pagetitle=mysql_query($query_pagetitle); if($result_pagetitle){ $pagetitle='数据库语句出错了!'; }elseif($array=mysql_fetch_array($query)){ $pagetitle=$array['rtitle']; }else{ $pagetitle='文章不存在!'; } 

在PHP手册的用户已经说得很清楚,在http://cn.php.net/manual/zh/function.mysql-result.php,的留言的第一条:

mysql_result() will throw E_WARNING if mysql_query returns 0 rows. This is unlike any of the mysql_fetch_* functions so be careful of this if you have E_WARNING turned on in error_reporting(). You might want to check mysql_num_rows() before calling mysql_result()

当mysql_query返回0条记录时,就会产生E_WARNING级的错误,注意在mysql_result前用mysql_num_rows() 检查,推荐使用mysql_fetch_xxxx什么的函数


当结果为空时候,PHP显示是有的 mysql_num_rows()

引用 1 楼 iasky 的回复:
Resource id #6

这个是当然有,只要mysql_query执行成功就有返回值!

函数原形 resource mysql_query  ( string $query  [, resource $link_identifier  ] )
http://cn2.php.net/manual/en/function.mysql-query.php

你还需要判断有几条结果,可能的结果就是0,使用函数mysql_num_rows

Use mysql_num_rows() to find out how many rows were returned for a SELECT statement


人家解释的很清楚了...
$result=mysql_query($query);  //这个$result只是一个句柄.
 
int mysql_num_rows() 返回是记录的条数.里面是有参数的
 
Resource id #6

这个是当然有,只要mysql_query执行成功就有返回值!

函数原形 resource mysql_query  ( string $query  [, resource $link_identifier  ] )
http://cn2.php.net/manual/en/function.mysql-query.php  

你还需要判断有几条结果,可能的结果就是0,使用函数mysql_num_rows
Use mysql_num_rows() to find out how many rows were returned for a SELECT statement

2009年3月20日星期五

读后感:日入1000元背后的:苦、累、冤、屈、怒(读后感)

  2009年新年一切都还是那么平静!除了网站还是网站!每天都在电脑旁忙碌着!

  对于一直以来支持和鼓励我们的学友和站长朋友,在此百荷对您说声谢谢!谢谢您们支持!2月26日,去银行国际部查了款,昨天收到一笔来自欧洲的汇款,汇款地:希腊,钱不多826元人民币,换成美元约120美元!说小了只是几百元人民币而已,说大了按目前比较时尚的话来说也算是国际业务!虽然在之前也有好几个国外的朋友想要学习,都被我以太远了,存取款和学习方面都不方便而婉言拒绝了,但这两次抱着试探的心态接受了来自境外友人的汇款!

  本以为很麻烦的收款,却只是仅仅几小时而已,款就到账了!按常理我应当很高兴才对、但我却高兴不起来,不是因为收钱不高兴,而是在担心收钱之后的服务如何来做!面对国外的学友,我需要考虑的事情会更多,例如:我们距离太远电脑网络会变慢,远程教学是很先进,但太远了毕竟还是操作不太方便!

  在这之前的前二天也就是23号,曾收到过一个来自中国香港的学员汇款685元!

 在教学中就遇到一些问题,在帮她远程协助下载软件的时候发现她的电脑用的是XP系统,但是,是繁体中文版的,看起来有些不太习惯,加上我们的服务器放在江西,她在香港下载我们服务器里的教材和软件就会比国内学员下载速度慢,终于下载完成了,但我所录制的视频语音教材在她的繁体中文版的XP系统上却打开出现failed1 错误码!对我来说是首次遇到样的问题,我第一时间百度搜索,找了许多相关的解决办法,忙碌的处理着,正打算下一步重新录制一套新的动画格式的视频语音教材来给这位学员下载学习,但需要时间来制作,这对我来说也是一次考验和挑战,但我喜欢这样的考验和挑战,对提高自己的业务能力和技术水平都会起到一定作用!想起N年前学习到的一句话:每天学习一点点,就是进步的开始!希望有一天能想出更完美的解决之道!更好的为更多会员服务!

  在几次跟身居国外的学友和众多国内学友报名学习之前的交流和沟通中却让我体会到两种截然不同的感受!国内的学员在咨询报名学习前很多会问到我一句话:“你们不是骗人的吧,我打款了你不教我怎么办?面对这样的学员大多数我回复的是:我们在国内已经有很多学员了,你考虑的问题他们都替你想过了,他们学会以后部分作品发表在《百荷音画驿站》www.cctv118.com学员作品专栏,你可以去看看!你放心了就报名学习, 不放心了请了解清楚了再来报名学习,我们随时欢迎你!” 当然这只是部分学友比较担心这个问题, 然而巧的是身居国外的这些学友们,他们却从来没有哪一位朋友提过这个问题!这又让我为当今国内的信誉问题的严重性有了深刻认识!

  在从开始教学到现在这一年中,为了教授学员,苦过,累过,冤过,委屈过,愤怒过

  苦过:一般都是早八点上班到晚上十二点,有学员学习就给学员指导,没有学员在线就更新网站,做音画作品!总觉得时间不够用!

  累过:由于国内没有几家的IDC的空间是很好用的,所以为了购买到好一点的、稳定一点的空间,冤枉钱花了不少,来来回回搬网站时间浪费了不少,其中之累自己和做过网站朋友最清楚!好不容易下定决心买台价格高点的服务器吧,新服务器上架三个月就坏硬盘,丢失数据,服务器几天登陆不上,网站数天打不开,客服也是不半理不睬的,搜索引擎关键字排名全部下降,想想做人真累!

  冤过:很多学员是懂礼貌的,很客气的!但难免还是有部分学员,不能理解我们的工作,拿着几张人民币把我们不当人看,为了更好的让学员能真正的学会,所以我们设置的是不限时间,学会为止!但部分学员不认为他是来求学的,就认为是拿钱来开心的,你正在讲课吧,他一会儿要去接个电话,一会儿要不就是有朋来了要先去喝酒,要不就是你正在给他远协助帮他解决问题吧,他还要先跟他的QQ好友一边聊天一边学习!等到他聊完天后你又得重新给他讲一次。要不就是他自己电脑设置或网络有问题打不开网站或上传不了文件,却不分好坏先是认为是我们的空间和网站有问题。同一个简单的问题,同样的讲法,有些学员一次就会,个别学员讲过十几次还是不会!

  委屈过:有时候正在吃饭吧,听到QQ嘀嘀嘀了,放下碗筷看看什么问题,结果不知多少次等到忙碌完了再去看看饭菜吧,早都凉了也吃不下了,如果是遇到节假日家人也自然就不高兴了!

  愤怒过:我想做过网站的朋友们感触最深,当你同时打开PS,FLASH软件,QQ在线的时候,正在处理图片或是已经忙碌了几个小时制作作品过程中突然在无声无息中弹出几个视频,让你的电脑瞬间卡死,如果之前没有保存,这几个小时的工作就白做了!这种感受就像忙碌了一辈子才修了一栋属于自己的房子,最后却被一把火烧了!

文章来自: 站长网(www.admin5.com)
 
【文章读后感】
 
什么才是网赚?
什么样才可以网赚?
 
网赚多么虚假,多么的可笑!
现在互联网上多少的幌子,多少的骗局!
月赚上万,日3万IP 可能吗?可信吗?
要靠做网站来维持自己的生存,容易吗?
 
www.admin5.com 中,不难发现,这么多的网站,这么多的站长,就像菜市场的烂菜一样,到处横放着,到处乱扔,贬值到了什么地步了?
 
网赚,真的就可以赚钱吗?
 
每次进入www.admin5.com 中,就发现了一种怪现象:发帖和回帖的人都会在自己的文章中留下连接。连接到自己的网站中。
这个就非常的奇怪了!
 
既然是网赚,那么为什么还要让竞争对手来知道自己的建站类型和盈利方法呢?
为什么要这么做呢?
真的是让人奇怪吧,这些网站的访问的流量基本上是来自于其他的站长的访问。
也就是做出来的网站全部是那些也想网赚的人去访问的,而实际上真的想访问这个网站的人是非常少的。
 
中国的人口太多了
国外的Free Domain、 Free Space只要一发布,不过一段时间,服务器就瘫痪了。
为什么,注册的人太多了。以至于很多的国外服务器都明确的表明着“Except China!”。现在国内的就业压力非常的大,想靠网络来赚钱的人已经非常多了。淘宝为什么那么火。互联网的泡沫在中国还是没有被吹破,“北大青鸟”、“清华IT”这些天天都在招生,还真的是出乎意料,真的有人跑去学什么IT专业,心中幻想着真的月薪三千,月薪上万。现在那些被裁员出来的IT精英们,不仅没有受到打击,反而还大赚一笔,因为开办一个什么IT培训班就相当的火了。“网赚”“网赚”“网赚”“坚持”“坚持”……本利润就非常少,现在快要成为传销模式了。就是发展下线,相互点击别人的广告。
 
网赚已经成为了根本不可能的事情了!
不要指望着靠广告点击来赚钱!
 
不知道在这样的年代,还会发生多少荒废的事情,浪费年轻的青春,浪费金钱,去投入到所谓的网络广告点击,去投入到所谓的网赚中。真正靠网络赚到钱的人,可以数的清。