php数据插入数据库代码,简单的php写入数据库类代码分享

不知道原创要写到随笔里。

All right ,第一篇博文。

有三个类:

1 . 过滤输入(轻量级的)

class input_filter

负责将参数,如$_GET,$_POST 这些过滤

返回值类型为 数组,用作 made_sql 类的参数

2 . 转换成SQL语句

class made_sql

参数的类型为数组和表名(字符串),数组的键名为表的列名,值为插入值

返回值类型为 字符串 ,用作 mysql ->query方法 的参数

3 . 数据库查询

class mysql

用到了单列模式,用静态方法来获取对象,具体参看 instanceof操作符的作用

class input_filter

{

private $input_all; // 要过滤的数组

private $rustle; // 过滤后的结果

//构造函数 参数可以是$_GET or $_POST 这些

public function __construct($input_C)

{

if(is_array($input_C))

$this->input_all = $input_C ;

else

echo 'Parameter is not valid';

//初始化,不然后面第一次合并数组PHP不知道这是什么类型

$this->rustle = array();

}

private function filter_arr() // 主函数

{

foreach ($this->input_all as $key_input => $val_input)

{

//如果键名不是字符串,那么返回错误信息

// for key

if(!is_string($key_input)) // error

{

echo 'This key is not string';

return false;

}

// The # is mysql Note .

$key_one = str_replace('#','',$key_input);

$key = htmlspecialchars($key_one,ENT_QUOTES,'UTF-8');

// 我没找 # 的HTML转义符,所以用空代替

$val_one = str_replace('#','',$val_input);

// 这个函数只转化 < > ' " ,还有个类似函数会转义所有符号

$val = htmlspecialchars($val_one,ENT_QUOTES,'UTF-8');

// merger

$rustle_one = array($key=>$val);

//合并数组

$this->rustle = array_merge($this->rustle,$rustle_one);

}

}

//这个函数有点多余,留下以后扩展用

public function get_filter_rustle()

{

$this->filter_arr();

return $this->rustle ;

}

}

调用方法:

$filter = new filter_input($_GET) ; // or $_POST

$input_data = $filter->get_filter();

转换成SQL语句:

class madesql

{

private $Cnow_ary; // type array 传入的参数

private $Cname_str;

private $insert_sql; //最终的sql语句 string type

public function __construct($Cary,$Cname)

{

//检查传入参数类型是否为数组

if (! is_array($Cary))

return false;

else

$this->Cnow_ary = $Cary; // 写入的值

$this->Cname_str = $Cname; // 数据库表名称

25 }

private function setSql() // 主函数 ,生产SQL语句

{

foreach ( $this->Cnow_ary as $key_ary => $val_ary )

{

$cols_sql = $cols_sql.','.$key_ary; //列名组合

$vals_sql = $vals_sql.', \''.$val_ary.'\'' ; //值 组合

}

// 因为前面foreach的算法有点问题,第一个字符是逗号

// 所以用sunstr_replace()删除 ,自第一位起(0),只替换一个字符(1)

$cols_sql = substr_replace($vals_sql,'',0,1);

$vals_sql = substr_replace($vals_sql,'',0,1);

$this->insert_sql =

'INSERT INTO '.$this->Cname_str.' ( '

.$cols_sql.' ) VALUES ( '.$vals_sql.' )'; // 语句成型

}

//扩展用

public function getSql()

{

$this->setSql();

return $this->insert_sql;

}

}

3 . 数据库查询

数据库查询类是参照书上的单列模式(用静态方法获取对象,这样在一个脚本里只有一个数据库查询类的实例)

我想单例模式用于这个类还是有点用的

class mysql

{

private $connect;

static $objectMysql; // 存放对象

private function __construct() 7 {

// 创建对象的时候这个构造函数会被调用,用来初始化

$connect = mysql_connect('db address','password','dbname');

$this->db = mysql_select_db('db',$connect);

}

public static function Mysql_object()

{

//instanceof 操作符用于检查对象是否属于某个类或者接口的实例。我说的不是很规范...

//如果$objectMysql不是mysql(self)的实例,那么就创建一个

if(! self::$objectMysql instanceof self)

self::$objectMysql = new mysql();

//这时候的$objectMysql就已经是一个对象

return self::$objectMysql;

}

public function query($sql)

{

return mysql_query($sql,$this->db);

}

}

All right ,归纳一下使用方法

$filter = new filter_input($_GET) ; // or $_POST

$input_data = $filter->get_filter();

$madeSql = new madesql($input_data,'tableName');

$sql = $madeSql->getSql();

$mysql = mysql::Mysql_object() ;

if( $mysql->query($sql) )

echo 'Ok';

else

echo 'failure';

只需要这几行调用代码即可以完成写入数据库的操作

另外再说一下构造函数的私有公有问题,书上的mysql单例模式中构造函数是声明为了private ,而没有单例模式的类如此则会产生编译错误,即 PHP 不能创建一个对象 ,查了下。

原因在于创建对象往往在类外面进行,这样就产生了无法访问构造函数的问题。 而单列模式是在自身类中创建对象,因此访问private方法没有限制。

原先以为单例模式只是防止创建相同的对象,现在看来单例模式可以将构造函数封装起来,确实提高了安全性

filter_input类 的结果可以直接用作 madesql类 的参数的 前提是 :

表单的name必须和数据库的列名相同,否则你就白看这么多

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将HTML表单中的数据插入数据库,需要使用PHP编写服务器端代码来处理表单提交并将数据插入数据库。以下是一个简单的示例: 1. 创建HTML表单 在HTML文件中添加一个表单,包含需要保存到数据库的字段。例如: ``` <form action="insert.php" method="post"> <label for="name">Name:</label> <input type="text" id="name" name="name"><br><br> <label for="email">Email:</label> <input type="email" id="email" name="email"><br><br> <input type="submit" value="Submit"> </form> ``` 2. 创建PHP脚本 在服务器端创建一个PHP文件(例如`insert.php`),用于处理表单提交并将数据插入数据库。在这个文件中,需要连接到数据库并执行INSERT语句来插入表单数据。 ``` <?php // 连接到数据库 $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "myDB"; $conn = mysqli_connect($servername, $username, $password, $dbname); // 检查连接是否成功 if (!$conn) { die("Connection failed: " . mysqli_connect_error()); } // 获取表单数据 $name = $_POST['name']; $email = $_POST['email']; // 在数据库插入数据 $sql = "INSERT INTO myTable (name, email) VALUES ('$name', '$email')"; if (mysqli_query($conn, $sql)) { echo "New record created successfully"; } else { echo "Error: " . $sql . "<br>" . mysqli_error($conn); } // 关闭数据库连接 mysqli_close($conn); ?> ``` 在这个例子中,我们使用了MySQL数据库。如果你使用其他型的数据库,需要使用相应的PHP扩展和连接代码。 3. 运行代码 将HTML文件和PHP文件上传到服务器,并在浏览器中打开HTML文件,填写表单并提交。如果一切正常,表单数据应该被插入数据库中。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值