一、环境搭建
环境我使用的XAMPP,搭建php和mysql的环境非常简单。
存在问题:XAMPP中的phpMyAdmin没法使用,没法直接利用phpMyAdmin进行表的创建。
本机环境:win7 x64 +IE8
二、手动在MySql中创建表
说明:使用XAMPP创建的mysql数据库是一个root密码为空的帐户,利用如下方式进行后,就可以直接操作
1.mysql的数据库的连接:
shell> mysql
--该方式进去后是一个没有权限的帐户。
shell> mysql -u root
--该方式进行后是root帐户权限
2.改数据密码:
shell> SET PASSWORD FOR 'root'@'localhost' = PASSWORD ('password')
这种方式改密码后,要登陆数据库,就需要密码,使用如下的命令行
shell> mysql -u root -p
password:(回车后出现,在这里输入密码)
3.创建一个数据库:
shell>CREATE TABLE tbl_name;
4.创建一个表:
下面是一个创建表从简单到复杂的全部过程。
DROP TABLE test;
CREATE TABLE test (
id int,
name varchar(20)
);
DROP TABLE test;
CREATE TABLE test (
id int NOT NULL,
name varchar(20) NOT NULL
);
DROP TABLE test;
CREATE TABLE test (
id int NOT NULL AUTO_INCREMENT,
name varchar(20) NOT NULL,
PRIMARY KEY (id)
);
DROP TABLE test;
CREATE TABLE test (
id int NOT NULL AUTO_INCREMENT,
name varchar(20) NOT NULL,
age int NOT NULL,
PRIMARY KEY (id)
);
DROP TABLE test;
CREATE TABLE test (
id int NOT NULL AUTO_INCREMENT ,
name varchar(20) NOT NULL,
age int NOT NULL,
info text NOT NULL,
PRIMARY KEY (id)
);
DROP TABLE test;
CREATE TABLE test (
id int NOT NULL AUTO_INCREMENT UNIQUE,
name varchar(20) NOT NULL DEFAULT 'name',
age int NOT NULL DEFAULT 0,
info text NOT NULL,
PRIMARY KEY (id)
);
三、PHP相关知识:
1.PHP表单处理:
我创建的表单与处理代码在同一个页面中,如下:
<html>
<head>
</head>
<body>
<form method="post" action=""> //acetion为空表示_self
<input type="text" name="id" value="">//查询的输入框
<input type="submit" name="select" value="查询"> //查询的提交按钮
</form>
<div>//将PHP运行的结果显示在这里!!!!
<?php
if(!empty($_POST["id"])){ //这里的$_POST对应的表单中method,“id”对应的是input标签中的name属性。
echo "你输入的值为:".$_POSH["id"];
}else{
echo "你没有输入数据!!!"
}
?>
</div>
</body>
</html>
2.PHP数据库连接:
代码如下:
<?php
//利用mydqli_connect进行连接,
$myConn=mysqli_connect("localhost","root","password","test");
//mysqli_connect(string $hostname, string $user,string password,string dbname)
//也可以将连接属性写在php.ini中,利用ini_get(属性名)的方式读取
//在php.ini中有如下属性:
//mysqli.default_host=
//mysqli.default_user=
//mysqli.default_pw或mysqli.default_password=
//mysqli.default_port=
//如果在php.ini中加上上述属性,可以直接 用mysqli_connect()进行连接,
mysqli_select_db($myConn,"db_name");//改变连接数据库,在mysqli_connect中如果没有连接数据库,在操作需使用该方法进行选择。
if(!$myconn){
die("ERROR".mysqli_error($myConn));
}else{
echo " 连接成功!";
}
>
3.PHP查询结果处理:
<?php
//假设我们在上面创建了test数据库test表,test表的结构与练习表创建时的相同。
//生成sql查询语句
$sql;
if(!empty($_POST["id"])){
$sql="SELECT * FROM test WHERE id=$_POST['id']";
}else{
die("请输入查询的值!!");//结束程序!!
}
//进行数据库连接
$myConn=mysqli_connect("localhost","root","password","test");
//进行判断
if($myConn){ //此处表示连接成功!
//执行查询:
if($result=mysqli_querry($myConn,$sql)){
//读取结果
$row_assoc=mysqli_fetch_assoc($result);//将结果集中的一行利用php中关联数组的形式读取
$row_array=mysqli_fetch_array($result);//将结果集中的一行利用php中数字数组的形式读取,也可以加参数用关联数组或两种方式读取
/**
* 默认情况下,mysqli_fetch_array()是以两种方式读取的
* 方法的原型如下:
* mixed mysqli_fetch_array ( mysqli_result $result [, int $resulttype = MYSQLI_BOTH ] )
* MYSQL_NUM:表示用数字数组的方式读取
* MYSQL_ASSOC:以关联数组的方式读取
* MYSQL_BOTH:以两种方式读取
* 该方式读取完一行后,会将结果集中的游标放到下一行,如果结果集中只有一行,则会读取之后游标会指向末尾
*
*/
//输出结果
//直接打印数组:
print_r($row_assoc);
//格式化打印:
printf("id:%s<br>name:%s<br>age:%s<br>info:%s<br>",$row_assoc["id"],$row_assoc["name"],$row_assoc["age"],$row_assoc["info"]);
}else{
die("查询失败:".mysqli_error($myConn))
}
mysqli_close($myConn);
}else{//下面的信息表示连接不成功!
die("error:".mysql_error($myConn)) ;
}
>
4.PHP数据库插入:
插入数据与查询数据与查询数据的就是将语句进行改变,其流程与使用方式都差不多。
<?php
//假设我们在上面创建了test数据库test表,test表的结构与练习表创建时的相同。
//假设我们在表单中创建了4个文本域,name属性分别为id,name,age,info
//生成sql插入语句
$sql;
if(!empty($_POST["id"])&&!empty($_POST["name"])&&!empty($_POST["age"])&&!empty($_POST["info"])){
$sql="INSERT INTO test(id,name,age,info) VALUES($_POST['id'],$_POST['name'],$_POST['age'],$_POST['info'])";
}else{
die("请输入查询的值!!");//结束程序!!
}
//进行数据库连接
$myConn=mysqli_connect("localhost","root","password","test");
//进行判断
if($myConn){ //此处表示连接成功!
//执行插入:
if(mysqli_querry($myConn,$sql)){
echo "插入成功!";
}else{
die("插入失败:".mysqli_error($myConn))
}
mysqli_close($myConn);
?>
四、PHP安全性相关的知识:
在使用PHP进行数据库操作的时候,有很几个与安全相关的方法,此方法在此不进行学习。利用上面的知识,可以很快速的搭建一个简单的SQL注入练习平台。至于平台的具体形式,要看本人的爱好,随便设计。复杂的话可能需要一点HTML相关的知识。