三天学会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"> </td>
<td width="115"><input type="text" name="text1" /></td>
<td width="8"> </td>
</tr>
<tr>
<td> </td>
<td><input type="text" name="text2" /></td>
<td> </td>
</tr>
<tr>
<td> </td>
<td><label>
<input type="submit" name="Submit" value="提交" />
</label>
<input type="reset" name="Submit2" value="重置" /></td>
<td> </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
转载随意,但请附上文章地址:-)