请选择 进入手机版 | 继续访问电脑版
收藏本站腾讯微博新浪微博
点点网模板设计大赛 phpchina

经典论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

蓝色理想 最新研发动态 用悬赏 三天解决问题 解决访问速度慢 论坛支持农历生日 - 给官方提建议

论坛活动及任务 归纳网站最新活动 地图任务 邮件更新任务:保护帐号安全

积分换实物,来参加蓝色理想积分兑换吧! 联系招聘客服 蓝色理想帮你找工作! 万元奖励等你拿——点点网模板设计大赛

查看: 3314|回复: 6

[php] php+mysql学习笔记 [复制链接]

hadesmile 楼主
帖子
117
体力
298
威望
1
发表于 2007-11-29 13:55:33 |显示全部楼层
我是从asp转到php的,下面是我最近学php的时候碰到的问题以及相关的解答,希望能对和我一样的初学者有所帮助

1.关于mysql的数据类型

mysql没有Boolean数据类型,可以用tinyint(1)来替代,因为在php里,0被认为是false,而1为true.

但是经过测试,发现括号里面的1其实并没有用处.tinyint占用一个字节,8位,可存储范围2^8即0~255,默认范围是-128~127

括号里面的1代表所占宽度为1(显示宽度)

<?php

$result=mysql_query('SELECT * FROM `user2`');
while($row=mysql_fetch_array($result))
{
echo $row['user_id'];
echo '<br />';
}
?>


user_id 类型为tinyint(1)和tinyint(10)的时候,输出的结果完全一样.当usr_id加上zerofill属性后,两者才会有区别.

之所以mysql用tinyint,是因为tinyint占的字节小,开销比较小.但是括号里面的数字是多少是无所谓的.

2.关于mysql_fetch_array()

这个函数的功能是返回一条记录集,将指针移到下一条记录集

我一直不是很明白这个函数返回的数组是一个什么样的结构,无意中发现了print_r函数,用在数组上,可以按照一定格式显示键和元素

将上面的代码稍作改变

<?php

$result=mysql_query('SELECT * FROM `user2`');
$row=mysql_fetch_array($result))
print_r($row);
?>

结果如下:

Array
(
    [0] => 1
    [user_id] => 1
)


豁然开朗,原来这个一维数组里面有两个元素,下标不同,值是相同的,所以在取字段值的时候$row['0']和$row['user_id']的结果是一样的.
如果还有不明白的,请看下面的例子.
<?php

$myarray=array(name=>myname,password=>'123456');
print_r($myarray);

?>

结果如下:
Array
(
    [name] => myname
    [password] => 123456
)
已有 1 人评分威望 收起 理由
kuhanzhu + 1 学习笔记,再接再厉,加点威望,以资鼓励。

总评分: 威望 + 1   查看全部评分

我的blog,酝酿中
西部数码顶级域名注册商39元抢注!

苦寒竹

管理员

帖子
19772
体力
17930
威望
23
居住地
浙江省 金华市
发表于 2007-11-29 14:52:58 |显示全部楼层
1、补充:
create table gbook(id int auto_increment primary key,title varchar(50),lid bit default 0)

与ASP中的ACC、MSSQL数据库一样,bit同样适用于MySQL。

楼主再发挥,继续帖你的学习笔记,可以先占位。
搞IT的穷秀才。
租服务器,上51IDC | [长沙]招聘:PHP经理10K/WEB前端6K/PHP开发6K

使用道具 举报

Fanbin 

霜之恋

钻石会员

帖子
4592
体力
5340
威望
5
居住地
欧洲 芬兰
发表于 2007-11-30 00:22:48 |显示全部楼层
MySQL中有Boolean类型-bool

使用道具 举报

Fanbin 

霜之恋

钻石会员

帖子
4592
体力
5340
威望
5
居住地
欧洲 芬兰
发表于 2007-11-30 09:46:02 |显示全部楼层
  1. create table test(boolcolumn bool not null default false);
  2. insert into test set boolcolumn = true;
复制代码


btw,请问kuhanzhu,占位叫不叫灌水?

使用道具 举报

苦寒竹

管理员

帖子
19772
体力
17930
威望
23
居住地
浙江省 金华市
发表于 2007-11-30 10:02:16 |显示全部楼层

回复 #4 Fanbin 的帖子

你这帖叫灌水。也可以叫版规咨询或者事物询问。
后台区管理是按照会员需要及利益来管理,我不会对把占位视为灌水。
因为斑竹还有个权力,叫删帖。
当占位的帖子没有被有用的资料填充后,斑竹就会把占位位置视为灌水而删除。
下面的回复请勿再针对本管理方法进行讨论,有问题可以去事物区交流。

[ 本帖最后由 kuhanzhu 于 2007-11-30 10:03 编辑 ]
搞IT的穷秀才。

使用道具 举报

hadesmile 楼主
帖子
117
体力
298
威望
1
发表于 2007-11-30 16:15:02 |显示全部楼层
不好意思,我这个笔记是即时的,边学边把自己觉得比较有用的东西拿出来大家分享(晕,在公司实在没事做了,闲的,呵呵)
本来想把整理的资料放在一起的,竟然不让编辑,只要写在下面了.

今天在研究一个很有用的东西,截取HTML字符串.

比如有一个网页只有几行
index.html
<HTML>
        <HEAD><TITLE>myhomepage</TITLE></HEAD>
        <BODY>
        正文内容
        </BODY>
</HTML>


我想把<TITLE>里面的字符串(即标题)截取出来.

分以下几步

1.打开这个文件
2.将文件内所有字符串都读出来
3.用正则表达式截取所需要的内容

第一步和第二步比较简单

if (file_exists('$page_path')==true)
{
        $of=fopen($page_path,r);
        $GetHtmlStr=fread($of,filesize($page_path));

}


注意fread()是读取所有行,fgets是读取一行,并将指针停留在下一行开头.


第三步需要建立正则表达式"(<title>)(.*)(</title>)"(关于正则可以去百度一下,不过不同的语言正则规范有差别)

用ereg()函数

ereg("(<title>)(.*)(</title>)",$string,$cutStr)


注意ereg()第三个参数是可有可无的,$cutStr是一个数组,正则式匹配的话,有几个括号就代表数组里有几项.

看到数组我就想print_r()一下,谁知道数组里字符串没有输出,查看源文件的时候才想起来HTML标记还需要转义一下

PHP里面的HTML转义函数htmlspecialchars(),但是好像是不能转数组的吧?

曾经想过做一个循环,每次取一项就转义一下然后再存回数组内,但是觉得太麻烦了.

后来发现有两个函数很有用explode(),implode()

implode()  数组转为字符串,我用"::"分割("::"这样的字符串一般网页里面不经常出现,你也可以再想更BT点的分割字符串)
explode()  字符串转为数组.

好了,有了这两个函数问题就解决了.
代码如下

$string='<html><title>myhomepage</title></html>';//代表已经把HTML的内容读出来了
if (ereg("(<title>)(.*)(</title>)",$string,$cutStr))
{
        $cutStr=htmlspecialchars(implode("::",$cutStr));
        $cutStr=explode("::",$cutStr);
        echo "<pre>";
        print_r($cutStr);
        echo "</pre>";
}else{
echo 'false';
}


网页显示结果
Array
(
    [0] => <title>myhomepage</title>
    [1] => <title>
    [2] => myhomepage
    [3] => </title>
)
说明:
[0]->包含整个匹配的字符串
[1]->第一个括号
[2]->第二个括号
...

ps:个人觉得php里面的函数真的很强大,asp,唉...

[ 本帖最后由 hadesmile 于 2007-11-30 16:16 编辑 ]
我的blog,酝酿中

使用道具 举报

Fanbin 

霜之恋

钻石会员

帖子
4592
体力
5340
威望
5
居住地
欧洲 芬兰
发表于 2007-11-30 16:54:13 |显示全部楼层
楼主加油!感受下开源的力量

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

Archiver|手机版|安久科技提供CDN|blueidea.com ( 京ICP备05002321号 )  

GMT+8, 2012-2-13 08:34 , Processed in 0.086927 second(s), 11 queries , Gzip On, Memcache On.

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部