三天学会php(有asp编程基础)

 本文作者:longlongago     博客地址:http://blog.csdn.net/longlongago2000

        寒假期间没事用asp做了一个写博的程序,后来想用php实现,于是就上网找到了php+mysql安装了,我找到的是安装自动配置的(phpStudyAdmin),很方便,安装好就可以用的,不用进行复杂的配置(听说配置很复杂,自己没试过)。

       开始学php,我知道要用实例来学php上手速度最快,想到我以前学asp是先做个简单的登录验证,做起来思想跟asp一样,都是表单的发送和接收,恰恰是这两个简单的动作在以后的编程中用得最多,可以说学会这两个动作你就开始入门了。我编写的代码如下:

登录:test1.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title><? echo "dskdfj|"."+++++++++++"; ?></title>
</head>

<body>

<form method="post" action="test2.php">
<table width="200" border="1">
  <tr>
    <td width="59">&nbsp;</td>
    <td width="115"><input type="text" name="text1" /></td>
    <td width="8">&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td><input type="text" name="text2" /></td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td><label>
      <input type="submit" name="Submit" value="提交" />
    </label>
    <input type="reset" name="Submit2" value="重置" /></td>
    <td>&nbsp;</td>
  </tr>
</table>
</form>
</body>
</html>

验证:test2.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
</head>
<?
$_name=$_REQUEST['text1'];
$_pass=$_REQUEST['text2'];
if($_name=="admin" && $_pass=="123"){
echo "验证通过,欢迎你";}
else{
echo "登陆失败,请返回";
}
?>
<body>
</body>
</html>

        学完$_POST[' ']和$_GET[' ']之后就可以进一步学一下数据库的连接和查询(其中基本的php语法跟C++很像,大家可以自己上网查相关资料,我学过C++所以很容易就上手了),连接数据库mysql主要是依赖以下几个函数:mysql_connect(dbhost,dbuser,password);//打开数据库连接

mysql_query($sql);//执行sql语句

mysql_fetch_array($result);//返回数据集,返回第一行,要结合while使用,每执行这个函数一次,指针将向下移。
先用这几句进行测试连接数据库,例子我就不写上来了,网上有很多这种例子,经过测试,我连接上了数据库,但是每次连接数据库都写这几句显然很不方便,所以我上网找了个sql的类,经过我自己的修改:

<?php
class TRecord
{
var $db;
var $rc;
var $name;
var $value;
var $num;
var $buffer;
var $seekstr;
function TRecord($host="localhost",$user="root",$passwd="root")
{
 global $HTTP_POST_VARS;
 $this->num=0;
 $this->host=$host;
 $this->user=$user;
 $this->passwd=$passwd;
 
 if(($this->db=mysql_connect($host,$user,$passwd))==false)
 exit("联结数据库出错!");
 mysql_query("SET NAMES 'gb2312'");//厉害,解决编码问题,统一用utf8
 mysql_query("SET CHARACTER SET gb2312");
 mysql_query("SET CHARACTER_SET_RESULTS=gb2312'");
while(list($this->name[$this->num],$this->value[$this->num])=each($HTTP_POST_VARS)){
 $this->num++;
}
for($i=0;$i<$this->num;$i++)
{
 $this->value[$i]=$this->SafeString($this->value[$i]);
}
}
function SafeString($message)
{
//$message=str_replace(" ","",$message);
$message=str_replace("/"","",$message);
$message=str_replace("'","",$message);

//$message=str_replace("@","",$message);
//$message=str_replace("//"","/"",$message);
//$message=nl2br($message);
return $message;
}
//
function reset()
{$this->num=0;
$this->name=array();
$this->value=array();
}
function add($name,$values)
{
$this->name[$this->num]=$name;
$this->value[$this->num]=$values;
$this->num++;
}
function unadd($name)
{$j=0;
for($i=0;$i<$this->num;$i++)
{if($this->name[$i]!=$name)
{$aaa[$j]=$this->name[$i];
$bbb[$j]=$this->value[$i];
$j++;
}
}
$this->name=$aaa;
$this->value=$bbb;
$this->num=$j;
}
 
function InsertRecord($database,$table)
{
mysql_select_db($database);
if($this->num==0)
exit("没有定义变量!");
$field=implode(",",$this->name);
for($i=0;$i<$this->num;$i++)
{
if(is_string($this->value[$i]))
$ls[$i]="'".$this->value[$i]."'";
else
$ls[$i]=$this->value[$i];
$value=implode(",",$ls);
}
$sql=sprintf("insert into %s(%s) values(%s)",$table,$field,$value);

if(mysql_query($sql,$this->db)==false)
{echo "写数据到数据库时出错:".$sql;
exit();
}
}
function SelectRecord($database,$table) //返回记录数,结果在缓冲区中
{mysql_select_db($database);
if($this->num==0)
$sql=sprintf("select * from %s",$table);
else
{
for($i=0;$i<$this->num;$i++)
{if(is_string($this->value[$i]))
$ls[$i]="'".$this->value[$i]."'";
else
$ls[$i]=$this->value[$i];
$str[$i]=sprintf("%s=%s",$this->name[$i],$ls[$i]);
}
$string=implode(" and ",$str);
$this->seekstr=$string;
$sql=sprintf("select * from %s where %s",$table,$string);
}
if(($rc=mysql_query($sql,$this->db))==false)
{echo "查询数据库时出错:".$sql;
exit();
}

$i=0;
while($temp=mysql_fetch_array($rc, MYSQL_ASSOC))
{
 $this->buffer[$i]=$temp;
 $i++;
}
mysql_free_result($rc);
return $i;
}


function SelectSomeRecord($database,$table,$sql) //返回记录数,结果在缓冲区中
{mysql_select_db($database);

$sql=sprintf("select * from %s %s",$table,$sql);
if(($rc=mysql_query($sql,$this->db))==false)
{echo "查询数据库时出错:".$sql;
exit();
}
$i=0;
while($temp=mysql_fetch_array($rc, MYSQL_ASSOC))
{
 $this->buffer[$i]=$temp;
 $i++;
}
mysql_free_result($rc);
return $i;
}

function UpdateRecord($database,$table,$limitstr)
{mysql_select_db($database);
if($this->num==0)
exit("没有定义变量!");
for($i=0;$i<$this->num;$i++)
{if(is_string($this->value[$i]))
$ls[$i]="'".$this->value[$i]."'";
else
$ls[$i]=$this->value[$i];
$upstr[$i]=$this->name[$i]."=".$ls[$i];
}
$str=implode(",",$upstr);
$sql=sprintf("update %s set %s where %s",$table,$str,$limitstr);
if(mysql_query($sql,$this->db)==false)
{echo "修改数据时出错:".$sql;
exit();
}
}

function DeletRecord($database,$table,$field,$value){
 mysql_select_db($database);
 $sql=sprintf("delete from %s where %s=%s",$table,$field,$value);
 if(mysql_query($sql,$this->db)==false)
 {echo "删除数据库时指定项出错:".$sql;
 exit();
 }
}

function AddRecord_one($database,$table,$field,$value){
 mysql_select_db($database);
 $sql=sprintf("insert into %s(%s) values(%s)",$table,$field,$value);
 if(mysql_query($sql,$this->db)==false)
 {echo "数据库出错:".$sql;
 exit();
 }
}
 function __call($name,$arguments) {
    if($name=='AddRecord') {
  if(count($arguments)==4) $this->AddRecord_one($arguments[0],$arguments[1],$arguments[2],$arguments[3]);
  if(count($arguments)==6) $this->AddRecord_two($arguments[0],$arguments[1],$arguments[2],$arguments[3],$arguments[4],$arguments[5]);
    }
  }  
function AddRecord_two($database,$table,$field1,$field2,$value1,$value2){
 mysql_select_db($database);

// @mysql_query("set names 'UTF-8'");
 //$sql="insert into test(name,)";
 $sql=sprintf("insert into %s(%s,%s) values(%s,%s)",$table,$field1,$field2,"'".$value1."'","'".$value2."'");
 if(mysql_query($sql,$this->db)==false)
 {echo "数据库出错:".$sql;
 exit();
 }
}

function addtip($database,$table,$fileds,$limitstr="")
{
mysql_select_db($database);
if($limitstr!="")
$sql=sprintf("update %s set %s=%s+1 where %s",$table,$fileds,$fileds,$limitstr);
else
$sql=sprintf("update %s set %s=%s+1",$table,$fileds,$fileds);
if(mysql_query($sql,$this->db)==false)
{echo "修改数据时出错:".$sql;
exit();
}
}

function unaddtip($database,$table,$fileds,$limitstr="")
{
mysql_select_db($database);
if($limitstr!="")
$sql=sprintf("update %s set %s=%s-1 where %s",$table,$fileds,$fileds,$limitstr);
else
$sql=sprintf("update %s set %s=%s-1",$table,$fileds,$fileds);
if(mysql_query($sql,$this->db)==false)
{echo "修改数据时出错:".$sql;
exit();
}
}
function isempty($var,$china)
{if(trim($var)=="")
{
$reason="没有录入“".$china."”!";
exit($reason);
}
}
function GetResult()
{return $this->buffer;
}
function close()
{
mysql_close($this->db);
}
}
function out($string){
 return mb_convert_encoding($string,"utf8","gb2312");
}
function in($string){
 return mb_convert_encoding($string,"gb2312","utf8");
}

?>

mysql_query("SET NAMES 'gb2312'");//厉害,解决编码问题,统一用utf8
 mysql_query("SET CHARACTER SET gb2312");
 mysql_query("SET CHARACTER_SET_RESULTS=gb2312'");
上面这几句是解决mysql对中文支持的重点,要统一编码,用gb2312就全部统一用gb2312,utf8的也就全部用utf8,不要混着用。在php页面也要设置页面编码和上面的编码一致。

//=============================================
$db=new TRecord();
$db->SelectRecord("longlongago_blog","article");
$dbdata=$db->buffer;


$db->close();

简简单单的几句就可以查询数据库longlongago_blog下的表article,获取到的$dbdata是一个二维数组,取值可以是$dbdata[记录行]['字段名'],可以用foreach或for来读取。非常方便。

          学到这里,如果你认真把上面的例子都做出来,体会一下,那么祝贺你,你已经基本学会了php,但想继续深入,掌握php,你要学的东西还很多。接下来的文章我将介绍用smarty代码模板分离框架,还有xajax框架。这将大大提高你编程效率!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值