首页 > php代码 > 三天学会php(有asp编程基础)

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

  寒假期间没事用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>

<?php

    $_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框架。这将大大提高你编程效率!


本文地址:http://www.phprm.com/code/3987a86d907c0eeba14f351bb642f31e.html

转载随意,但请附上文章地址:-)

标签:none

发表留言