关闭

PHP面向对象留言板(三)模拟客户端传来的JSON格式的数据写入数据库

标签: php数据库json留言板
313人阅读 评论(0) 收藏 举报
分类:

PHP面向对象留言板(三)模拟客户端传来的JSON格式的数据写入数据库

code:https://code.csdn.net/u012995856/oop_liuyanban/tree/master

效果图:
这里写图片描述

这里写图片描述

本打算是前端ajax提交json格式数据,调试了很长时间还没实现,就使用PHP模拟了前端提交的json数据.

json数据中id的key-value先用作存储对象的名字也就是对应的实体名即数据库表名.

计划model中提供通用的insert方法,解析json数据,自动由与数据库表字段对应的key写value,但是没实现

代码:
Model.php

<?php
/**
 *模型类,介于实体类与数据库表之间的存在,是拥有数据的实体类集合
 *
 */
require 'DB.php';

class Model
{
  private $obj;
  private $entity_name;
  private $db;
  private $container;

  //构造方法
  //根据实例化Model时的传入参数
  //自动加载实体类,并实例化
  function __construct($entity){

    $this->entity_name = $entity;//暂存实体类类名

    $this->db = new DB;

    set_include_path('./');//设置自动加载目录
    spl_autoload_register();//自动加载

    $this->obj = new $entity;//实例化实体类

  }

  //根据模型自动查询数据,将结果集对象化到容器,返回对象容器
  public function get_all(){
    $sql = 'select * from '.$this->entity_name;
    $result = $this->db->query($sql);

    $container = new SplObjectStorage();//实例化对象容器

    while ($entity_obj = $result->fetch_object()) {
        $container->attach($entity_obj);
    }

    return $container;
  }

//将一条数据写入数据库

  public function _insert($obj_json_format){
//解析json
    $temp = json_decode($obj_json_format);
//构建sql
    $sql =  'insert into liuyanban values("'.$temp->lyb_id.'","'.$temp->lyb_title.'","'.$temp->lyb_content.'","'.$temp->lyb_author.'","'.$temp->lyb_time.'","'.$temp->lyb_authoremail.'",'.$temp->lyb_pass.')';
//返回数据库执行结果 true or false
    return $this->db->query($sql);
  }



}

add.php

<?php
require 'Model.php';

/**
 *控制器
 *接收json格式数据,
 *调用Model
 */


 //模拟客户端传来的JSON格式的数据
// id 处理前作为传递model对象的类名
//之后作为表id

$arr = array(
  'lyb_id' => 'liuyanban',
  'lyb_author' => 'py',
  'lyb_title' => '留言数据',
  'lyb_content' => '留言内容',
  'lyb_time' => time(),
  'lyb_authoremail' => 'pangPython@qq.com',
  'lyb_pass' => 1
 );

$lybjson = json_encode($arr);

//上面接收来自客户端的数据
$_obj = json_decode($lybjson);//解码json
$class_name = $_obj->lyb_id;//暂存表名
$_obj->lyb_id = md5(time());//使用md5+Unix时间戳作为每条记录的id

$model = new Model($class_name);

// var_dump($_obj->lyb_id);

//
if ($model->_insert(json_encode($_obj))) {
  echo '留言写入成功!';
}else {
  echo '留言写入失败!';
}

//echo $model->_insert(json_encode($_obj));


// print_r($_obj);
1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    微信公众号
    二本的全栈工程师
    捐赠
    个人资料
    • 访问:151605次
    • 积分:4067
    • 等级:
    • 排名:第7625名
    • 原创:254篇
    • 转载:15篇
    • 译文:1篇
    • 评论:39条
    博客专栏