三天学会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
转载随意,但请附上文章地址:-)