关于php编程问题

2024-05-16

1. 关于php编程问题

开放源代码的概念来源于自由软件的概念。自由软件是黑客世界的传统。主要是基于减少重复劳动的考虑。
开放源代码是自由软件理念的阉割(大企业推崇程序员们开放源代码的同时自己尽可能的不开放,这符合开源却不符合自由软件的规则)。
自由软件要求软件开发者确保客户获取源代码并自由修改的权力,并要求客户履行继续向其下一级客户公开修改后的源代码的义务(以此避免开源产品最终形成闭源)。

楼主所担心的程序被他人拿去是很正常的现象(你也可以拿走别人的代码),自由软件的理念认为,作者A写出的作品由作者B在不知源代码的条件下复刻并不是一件困难的事情,因而通过闭源保护代码完全没有必要。自由软件主张减少非原创性的作品(也即重复劳动),对于原创性的作品,通过专利权的获取来保证对开源代码的收益权(专利是前人未做过的,通过专利来承认你的劳动贡献)。
自由软件理念还隐含通过第三产业(软件服务支持)来获取收益的理念。

大企业为了逃避自由软件所带来的强制约束,用开源代替了自由,从而将强制履行的开源义务变成了选择性履行。 

PHP是一种脚本语言,写出的代码同样可以视为软件的一种,所以也可以和自由软件和开源的概念产生关联。如果要学PHP的话,这个不是重点。

关于php编程问题

2. php的问题

我也遇到过,不过没理会!刚刚看到就去查了下为啥呢?还真找到了!转给你!
相信很多用了mysql很久的人,对这两个字段属性的概念还不是很清楚,一般会有以下疑问: 

1、我字段类型是not null,为什么我可以插入空值 

2、为毛not null的效率比null高 

3、判断字段不为空的时候,到底要 select * from table where column  '' 还是要用 select * from table where column is not null 呢。 

带着上面几个疑问,我们来深入研究一下null 和 not null 到底有什么不一样。 

首先,我们要搞清楚“空值” 和 “NULL” 的概念: 

1、空值是不占用空间的 

2、mysql中的NULL其实是占用空间的,下面是来自于MYSQL官方的解释 

“NULL columns require additional space in the row to record whether their values are NULL. For MyISAM tables, each NULL column takes one bit extra, rounded up to the nearest byte.” 

打个比方来说,你有一个杯子,空值代表杯子是真空的,NULL代表杯子中装满了空气,虽然杯子看起来都是空的,但是区别是很大的。 

搞清楚“空值”和“NULL”的概念之后,问题基本就明了了,我们搞个例子测试一下: 

CREATE TABLE  `test` ( 
`col1` VARCHAR( 10 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL , 
`col2` VARCHAR( 10 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL 
) ENGINE = MYISAM ; 
插入数据: 

INSERT INTO `test` VALUES (null,1); 
mysql发生错误: 
#1048 - Column 'col1' cannot be null 
再来一条 

INSERT INTO `test` VALUES ('',1); 
成功插入。 
可见,NOT NULL 的字段是不能插入“NULL”的,只能插入“空值”,上面的问题1也就有答案了。 

对于问题2,上面我们已经说过了,NULL 其实并不是空值,而是要占用空间,所以mysql在进行比较的时候,NULL 会参与字段比较,所以对效率有一部分影响。 

而且对表索引时不会存储NULL值的,所以如果索引的字段可以为NULL,索引的效率会下降很多。 

我们再向test的表中插入几条数据: 

INSERT INTO `test` VALUES ('', NULL); 
INSERT INTO `test` VALUES ('1', '2'); 

现在表中数据: 


现在根据需求,我要统计test表中col1不为空的所有数据,我是该用“ ''” 还是 “IS NOT NULL” 呢,让我们来看一下结果的区别。 

SELECT * FROM `test` WHERE col1 IS NOT NULL 

SELECT * FROM `test` WHERE col1  '' 


可以看到,结果迥然不同,所以我们一定要根据业务需求,搞清楚到底是要用那种搜索条件。 


--------------------------------- 

http://blog.csdn.net/eroswang/article/details/8529817 

Mysql数据库是一个基于结构化数据的开源数据库。SQL语句是MySQL数据库中核心语言。不过在MySQL数据库中执行SQL语句,需要小心两个陷阱。 

  陷阱一:空值不一定为空 

  空值是一个比较特殊的字段。在MySQL数据库中,在不同的情形下,空值往往代表不同的含义。这是MySQL数据库的一种特性。如在普通的字段中(字符型的数据),空值就是表示空值。但是如果将一个空值的数据插入到TimesTamp类型的字段中,空值就不一定为空。此时为出现什么情况呢 

  我先创建了一个表。在这个表中有两个字段:User_id(其数据类型是int)、Date(其数据类型是TimesTamp)。现在往这个表中插入一条记录,其中往Date字段中插入的是一个NULL空值。可是当我们查询时,其结果显示的却是插入记录的当前时间。这是怎么一回事呢?其实这就是在MySQL数据库中执行SQL语句时经常会遇到的一个陷阱:空值不一定为空。在操作时,明明插入的是一个空值的数据,但是最后查询得到的却不是一个空值。 

  在MySQL数据库中,NULL对于一些特殊类型的列来说,其代表了一种特殊的含义,而不仅仅是一个空值。对于这些特殊类型的列,各位读者主要是要记住两个。一个就是笔者上面举的TimesTamp数据类型。如果往这个数据类型的列中插入Null值,则其代表的就是系统的当前时间。另外一个是具有auto_increment属性的列。如果往这属性的列中插入Null值的话,则系统会插入一个正整数序列。而如果在其他数据类型中,如字符型数据的列中插入Null的数据,则其插入的就是一个空值。 

  陷阱二:空值不一定等于空字符 

  在MySQL中,空值(Null)与空字符(’’)相同吗?答案是否定的。 

  在同一个数据库表中,同时插入一个Null值的数据和一个’’空字符的数据,然后利用Select语句进行查询。显然其显示的结果是不相同的。从这个结果中就可以看出,空值不等于空字符。这就是在MySQL中执行SQL语句遇到的第二个陷阱。在实际工作中,空值数据与空字符往往表示不同的含义。数据库管理员可以根据实际的需要来进行选择。如对于电话号码等字段,可以默认设置为空值(表示根本不知道对方的电话号码)或者设置为空字符(表示后来取消了这个号码)等等。由于他们在数据库中会有不同的表现形式,所以数据库管理员需要区别对待。笔者更加喜欢使用空值,而不是空字符。这主要是因为针对空值这个数据类型有几个比较特殊的运算字符。如果某个字段是空字符,数据库中是利用字段名称来代替。相反,如果插入的是空值,则直接显示的是NULL。这跟其他数据库的显示方式也是不同的。 

  一是IS NULL 和IS NOT NULL关键字。如果要判断某个字段是否含用空值的数据,需要使用特殊的关键字。其中前者表示这个字段为空,后者表示这个字段为非空。在Select语句的查询条件中这两个关键字非常的有用。如需要查询所有电话号码为空的用户(需要他们补充电话号码信息),就可以在查询条件中加入is not null关键字。 

  二是Count等统计函数,在空值上也有特殊的应用。如现在需要统计用户信息表中有电话号码的用户数量,此时就可以使用count函数、同时将电话号码作为参数来使用。因为在统计过程中,这个函数会自动忽略空值的数据。此时统计出来的就是有电话号码的用户信息。如果采用的是空字符的数据,则这个函数会将其统计进去。统计刚才建立的两条记录时,系统统计的结果是1,而不是2。可见系统自动将Null值的数据忽略掉了。 

判断NULL用is null  或者 is not null。 sql语句里可以用ifnull函数来处理 
判断空字符串‘’,要用 ='' 或者 ''。sql语句里可以用if(col,col,0)处理,即:当col为true时(非null,及非'')显示,否则打印0

3. php的问题

首先欢迎你加PHPer行列。
 
1、PHP可以在Win或Linux系统下运行,分别有windows版和linux版。而开发一般都在windows系统下进行,也有在linux下的,但比较少,因为在Linux下开发可能效率比较低。Win下的开发工具一般有ZendStudio、Eclipse、Dreamweaver等以及一些文本编辑软件也可以编写。
 
2、在配置Apache的时候,没有那么可怕。在Windows下有一些现在的安装包,已经包含了Apache+Mysql的运行环境。这些软件有ApmServ、PHPStudy、Xampp、WampServer等。
而在linux下运行,有安装包,也有编译版,看你运行的linux版本和你的具体需要,一般直接安装Apache+PHP+Mysql安装包就可以了。相关教程网上有很多。
 
最后祝你成为一名牛X的PHPer,加油

php的问题

4. php 源码

PHP,是英文超级文本预处理语言Hypertext Preprocessor的缩写。PHP 是一种 HTML 内嵌式的语言,是一种在服务器
端执行的嵌入HTML文档的脚本语言,语言的风格有类似于C语言,被广泛的运用。PHP源码指的使用PHP开发的实例,没有经过二次封装,能够直接进行二
次开发的程序,PHP简单易学,如果你想学网站开发,PHP是一个不错的选择,因会PHP跟其它语言相对有一定的优势:
1、PHP是开放的源代码:所有的PHP源代码事实上都可以得到。
2、PHP是免费的。和其它技术相比,PHP本身免费。
3、php的快捷性,程序开发快,运行快,技术本身学习快。嵌入于HTML:因为PHP可以被嵌入于HTML语言,它相对于其他语言,编辑简单,实用性强,更适合初学者。
4、跨平台性强:由于PHP是运行在服务器端的脚本,可以运行在UNIX、LINUX、WINDOWS下。
5、效率高:PHP消耗相当少的系统资源。
6、图像处理:用PHP动态创建图像
7、面向对象:在php5 中,面向对象方面都有了很大的改进,现在php完全可以用来开发大型商业程序。
8、专业专注:

5. 有关php的问题

关于“php has encountered an access violation”这个错误,有以下七种可能,你一条一条检查:

1、php中 eaccelerator 的扩展。eaccelerator的扩展在旧版本中兼容性不是很好,建议使用新的版本代替,现在最新稳定是3.0.2。同时php建议在php5.3以上。

2、在php.ini中,session_save_path设置的路径无法写入,检查一下是否有权限。

3、临时目录,windows下是c:/windows/temp,linux下是/tmp,看看有没有写入的权限。

4、内存不足,加条内存什么的吧,或者做做双通道,现在内存的价格也不贵。

5、ZendOptimizer和php的搭配不是很好,都换个最新的版本试试。

6、这种多属于用win2003的用户,他们在应用池中设定了限制,比如多长时间回收,最大使用内存多少等等,这些设置势必造成这个经典的php错误。

7、在php.ini中,upload_tmp_dir设置的路径无法写入,这个也检查一下。

有关php的问题

6. PHP的问题

PHP文件是需要服务器运行的,所以需要下载软件模拟服务器环境。
我用的是WAMP,即Windows系统下的Apache+Mysql+PHP,一组常用来搭建动态网站或者服务器的开源软件,虽然是4个软件,但是安装很简单

将你的PHP文件放到www目录下,然后打开locallhost
或者打开浏览器,这就是www目录下的文件路径,用鼠标点开你的那个文件就可以了,这图是我机子上的情况,一般新安装绝对是空的



在这里下载WAMP
http://www.duote.com/soft/56016.html

7. PHP的一个问题。

PHP中的字符串中,允许使用变量。
上面这条SQL的原型是:$sql="insert into speak(user,title,content,date)".
  "values('" . $_POST[name] . "','" . $_POST[title] . "','" . $_POST[content] . "',now())";
也就是说:SQL语句中,字段的值,VALUES部份,应该用单引号括着两边。
如:insert into speak (user,titile) VALUES('用户名','标题');

如果你理解了这个SQL语句,你的问题一和问题二就不是这样理解了。
因为$_POST[name]是个变量,它和外面的单引号是没有关系的。但是在这里,$_POST[name]和$_POST['name']是两个不同的变量。
举例:
$name = "user";
$_POST[name]就等于$_POST['user'],提取的是user的值。
但$_POST['name'],就只是提取表单name的值。

为了形成良好的PHP书写格式,你的SQL语句应该这样写。
$strName = $_POST['name'];
$strTitle = $_POST['title'];
$strContent = $_POST['content'];
$sql="insert into speak(user,title,content,date)".
  "values('$strName','$strTitle','$strContent',now())";

PHP的一个问题。

8. 关于PHP问题的请教

1、首先你要知道整个流程:
网站通常客户通过前端进行信息传递,后端接收并处理,数据库记录或调用,然后后端再传递处理结果给前端,前端再反馈给客户。

2、你缺少的知识:
(1)mysql数据库,用于记录信息(会员注册和留言信息储存的方式)
(2)服务器搭建,如果你想让人真正可以使用(这个你可以通过购买虚拟域名,这样可以减少很多工作量和知识储备)
(3)需要学习至少一个框架,可以减少开发周期(可选,学习期间也可以不学,推荐学习TP框架,中文文档比较多)

3、前后台链接方式:
(1)连起来的方式其实很简单,就是前端通过表单或按钮访问后端网址,同时通过post或get方式传递数据给后端。
(2)后端接受到数据以后,处理数据,处理完以后跟mysql数据库进行增删改查的操作,操作完了以后,在反馈回前端。
(3)前端收到具体数据后进行相应的体现告诉用户。

4、举例:注册

前端,a.html设置一个表单

        
        
        
        
    
后端,b.php接受数据并且处理
<?php
//接受数据:一般接收时就得做些处理,以免被攻击,具体处理自己查。
$username=$_POST['username'];//获取用户名
$password=$_POST['password'];//获取密码
$password2=$_POST['password2'];//获取密码2

//操作数据
if($password != $password2){
echo "两次输入密码不一致";
}else{
echo "进行入库前操作,在记录到数据库,最后返回信息给前端。";
}
?>
最新文章
热门文章
推荐阅读