当前位置:Gxlcms > 数据库问题 > 10天学会phpWeChat——第九天:数据库增、删、改、查(CRUD)操作

10天学会phpWeChat——第九天:数据库增、删、改、查(CRUD)操作

时间:2021-07-01 10:21:17 帮助过:15人阅读

<?php 2 //自适应模块的PC前端控制器 3 use wechat\hello\hello; 4 use phpWeChat\Area; 5 use phpWeChat\CaChe; 6 use phpWeChat\Config; 7 use phpWeChat\Member; 8 use phpWeChat\Module; 9 use phpWeChat\MySql; 10 use phpWeChat\Order; 11 use phpWeChat\Upload; 12 13 !defined(‘IN_APP‘) && exit(‘Access Denied!‘); 14 15 switch($action) 16 { 17 case ‘test‘: 18 //传统SQL写法 19 $data=MySql::fetchAll("SELECT * FROM ".DB_PRE."wechat_hello_article WHERE id>1 ORDER BY id DESC LIMIT 0,2"); 20 print_r($data); 21 22 //连贯操作 23 $article=M(‘wechat_hello_article‘); 24 $data=$article->where(‘id>1‘)->order(‘id‘,‘desc‘)->limit(2)->select(); 25 print_r($data); 26 exit(); 27 break; 28 case ‘index‘: 29 //从数据表读取数据并赋给数组$data 30 //$data=Hello::dataList(); 31 echo ‘这是自适应模块的PC端前端控制器‘; 32 exit(); 33 break; 34 case ‘detail‘: 35 $data=Hello::dataGet($id); //$id 可以改成$_GET[‘id‘] 36 break; 37 case ‘tougao‘: 38 39 break; 40 case ‘tougaosave‘: 41 $info[‘pics‘]=deformat_focus_img(‘pics‘); //多图上传的特殊处理,其他类型不需要 42 43 print_r($info); 44 exit(); 45 46 /* 47 $op=Hello::dataInsert($info); 48 49 if($op) 50 { 51 echo ‘文章投稿成功,ID为‘.$op; 52 } 53 else 54 { 55 echo ‘文章投稿失败‘; 56 } 57 exit(); 58 */ 59 break; 60 //以下 case 条件仅为 示例。您可以根据业务逻辑自由修改和拓展 61 62 //case ‘index‘: 63 64 //在此写 index.php?m=hello&a=index 时的逻辑 65 66 //break; 67 68 //case ‘list‘: 69 70 //在此写 index.php?m=hello&a=list 时的逻辑 71 72 //break; 73 74 //以此类推... 75 76 //case ‘...‘: 77 78 //在此写 index.php?m=hello&a=... 时的逻辑 79 80 //break; 81 82 default: 83 break; 84 } 85 ?>

效果:

技术分享

如图,在控制器中,传统操作和连贯操作的效果是一样的,只是连贯操作给人感觉更简洁、更炫酷。

2、读取pw_wechat_hello_article ID为2的1条记录:

 1 <?php
 2     //自适应模块的PC前端控制器
 3     use wechat\hello\hello;
 4     use phpWeChat\Area;
 5     use phpWeChat\CaChe;
 6     use phpWeChat\Config;
 7     use phpWeChat\Member;
 8     use phpWeChat\Module;
 9     use phpWeChat\MySql;
10     use phpWeChat\Order;
11     use phpWeChat\Upload;
12 
13     !defined(‘IN_APP‘) && exit(‘Access Denied!‘);
14 
15     switch($action)
16     {
17         case ‘test‘:
18             //传统SQL写法
19             $data=MySql::fetchOne("SELECT * FROM ".DB_PRE."wechat_hello_article WHERE id=5");     
20             print_r($data);
21 
22             //连贯查询
23             $article=M(‘wechat_hello_article‘);
24             $data=$article->where(‘id=5‘)->find();
25             print_r($data);
26             exit();
27             break;
28         case ‘index‘:
29             //从数据表读取数据并赋给数组$data
30             //$data=Hello::dataList();
31             echo ‘这是自适应模块的PC端前端控制器‘;
32             exit();
33             break;
34         case ‘detail‘:
35             $data=Hello::dataGet($id); //$id 可以改成$_GET[‘id‘]
36             break;
37         case ‘tougao‘:
38 
39             break;
40         case ‘tougaosave‘:
41             $info[‘pics‘]=deformat_focus_img(‘pics‘); //多图上传的特殊处理,其他类型不需要
42 
43             print_r($info);
44             exit();
45 
46             /*
47             $op=Hello::dataInsert($info);
48 
49             if($op)
50             {
51                 echo ‘文章投稿成功,ID为‘.$op;
52             }
53             else
54             {
55                 echo ‘文章投稿失败‘;
56             }
57             exit();
58             */
59             break;
60         //以下 case 条件仅为 示例。您可以根据业务逻辑自由修改和拓展
61 
62         //case ‘index‘:
63 
64             //在此写 index.php?m=hello&a=index 时的逻辑
65 
66             //break;
67 
68         //case ‘list‘:
69 
70             //在此写 index.php?m=hello&a=list 时的逻辑
71 
72             //break;
73 
74         //以此类推...
75 
76         //case ‘...‘:
77 
78             //在此写 index.php?m=hello&a=... 时的逻辑
79 
80             //break;
81 
82         default:
83             break;
84     }
85 ?>

效果:

技术分享

小贴士:

传统操作的MySql::fetchAll()方法等同于连贯操作的select()方法,他们都返回一个由结果集组成的二维数组。

传统操作的MySql::fetchOne()方法等同于连贯操作的find()方法,他们都返回一个指定结果的一维数组。

 

三、Create——数据库写操作的传统操作和连贯操作示例

向数据库插入一条记录。

 1 <?php
 2     //自适应模块的PC前端控制器
 3     use wechat\hello\hello;
 4     use phpWeChat\Area;
 5     use phpWeChat\CaChe;
 6     use phpWeChat\Config;
 7     use phpWeChat\Member;
 8     use phpWeChat\Module;
 9     use phpWeChat\MySql;
10     use phpWeChat\Order;
11     use phpWeChat\Upload;
12 
13     !defined(‘IN_APP‘) && exit(‘Access Denied!‘);
14 
15     switch($action)
16     {
17         case ‘test‘:
18             $info=array();
19             $info[‘title‘]=‘要插入的标题‘;
20             $info[‘content‘]=‘要插入的内容‘;
21 
22             //传统SQL写法
23             $insert_id=MySql::insert(DB_PRE."wechat_hello_article",$info);     
24             echo(‘插入的ID‘.$insert_id);
25 
26             //连贯查询
27             $article=M(‘wechat_hello_article‘);
28             $insert_id=$article->add($info); //或者 $data=$article->data($info)->add();
29             echo(‘插入的ID‘.$insert_id);
30             exit();
31             break;
32         case ‘index‘:
33             //从数据表读取数据并赋给数组$data
34             //$data=Hello::dataList();
35             echo ‘这是自适应模块的PC端前端控制器‘;
36             exit();
37             break;
38         case ‘detail‘:
39             $data=Hello::dataGet($id); //$id 可以改成$_GET[‘id‘]
40             break;
41         case ‘tougao‘:
42 
43             break;
44         case ‘tougaosave‘:
45             $info[‘pics‘]=deformat_focus_img(‘pics‘); //多图上传的特殊处理,其他类型不需要
46 
47             print_r($info);
48             exit();
49 
50             /*
51             $op=Hello::dataInsert($info);
52 
53             if($op)
54             {
55                 echo ‘文章投稿成功,ID为‘.$op;
56             }
57             else
58             {
59                 echo ‘文章投稿失败‘;
60             }
61             exit();
62             */
63             break;
64         //以下 case 条件仅为 示例。您可以根据业务逻辑自由修改和拓展
65 
66         //case ‘index‘:
67 
68             //在此写 index.php?m=hello&a=index 时的逻辑
69 
70             //break;
71 
72         //case ‘list‘:
73 
74             //在此写 index.php?m=hello&a=list 时的逻辑
75 
76             //break;
77 
78         //以此类推...
79 
80         //case ‘...‘:
81 
82             //在此写 index.php?m=hello&a=... 时的逻辑
83 
84             //break;
85 
86         default:
87             break;
88     }
89 ?>

效果:

技术分享

小贴士:
传统操作的MySql::insert()方法等同于连贯操作的add()方法,成功插入时,他们都返回插入的记录ID,失败时,返回FALSE。

四、Update——数据库更新操作的传统操作和连贯操作示例

更新ID为11的文章标题为“我是新标题”。

 1 <?php
 2     //自适应模块的PC前端控制器
 3     use wechat\hello\hello;
 4     use phpWeChat\Area;
 5     use phpWeChat\CaChe;
 6     use phpWeChat\Config;
 7     use phpWeChat\Member;
 8     use phpWeChat\Module;
 9     use phpWeChat\MySql;
10     use phpWeChat\Order;
11     use phpWeChat\Upload;
12 
13     !defined(‘IN_APP‘) && exit(‘Access Denied!‘);
14 
15     switch($action)
16     {
17         case ‘test‘:
18             $info=array();
19             $info[‘title‘]=‘我是新标题‘;
20 
21             //传统SQL写法
22             MySql::update(DB_PRE."wechat_hello_article",$info,‘id=11‘);     
23 
24             //连贯查询
25             $article=M(‘wechat_hello_article‘);
26             $article->where(‘id=11‘)->data($info)->save(); //或者 $data=$article->save($info);
27 
28             exit();
29             break;
30         case ‘index‘:
31             //从数据表读取数据并赋给数组$data
32             //$data=Hello::dataList();
33             echo ‘这是自适应模块的PC端前端控制器‘;
34             exit();
35             break;
36         case ‘detail‘:
37             $data=Hello::dataGet($id); //$id 可以改成$_GET[‘id‘]
38             break;
39         case ‘tougao‘:
40 
41             break;
42         case ‘tougaosave‘:
43             $info[‘pics‘]=deformat_focus_img(‘pics‘); //多图上传的特殊处理,其他类型不需要
44 
45             print_r($info);
46             exit();
47 
48             /*
49             $op=Hello::dataInsert($info);
50 
51             if($op)
52             {
53                 echo ‘文章投稿成功,ID为‘.$op;
54             }
55             else
56             {
57                 echo ‘文章投稿失败‘;
58             }
59             exit();
60             */
61             break;
62         //以下 case 条件仅为 示例。您可以根据业务逻辑自由修改和拓展
63 
64         //case ‘index‘:
65 
66             //在此写 index.php?m=hello&a=index 时的逻辑
67 
68             //break;
69 
70         //case ‘list‘:
71 
72             //在此写 index.php?m=hello&a=list 时的逻辑
73 
74             //break;
75 
76         //以此类推...
77 
78         //case ‘...‘:
79 
80             //在此写 index.php?m=hello&a=... 时的逻辑
81 
82             //break;
83 
84         default:
85             break;
86     }
87 ?>

效果:

技术分享

小贴士:
传统操作的MySql::update()方法等同于连贯操作的save()方法,用于记录更新。

五、Delete——数据库删除操作的传统操作和连贯操作示例

删除ID为11的文章。

 1 <?php
 2     //自适应模块的PC前端控制器
 3     use wechat\hello\hello;
 4     use phpWeChat\Area;
 5     use phpWeChat\CaChe;
 6     use phpWeChat\Config;
 7     use phpWeChat\Member;
 8     use phpWeChat\Module;
 9     use phpWeChat\MySql;
10     use phpWeChat\Order;
11     use phpWeChat\Upload;
12 
13     !defined(‘IN_APP‘) && exit(‘Access Denied!‘);
14 
15     switch($action)
16     {
17         case ‘test‘:
18             //传统SQL写法
19             MySql::mysqlDelete(DB_PRE."wechat_hello_article",11,‘id‘);     
20 
21             //连贯查询
22             $article=M(‘wechat_hello_article‘);
23             $article->where(‘id=11‘)->delete();
24 
25             exit();
26             break;
27         case ‘index‘:
28             //从数据表读取数据并赋给数组$data
29             //$data=Hello::dataList();
30             echo ‘这是自适应模块的PC端前端控制器‘;
31             exit();
32             break;
33         case ‘detail‘:
34             $data=Hello::dataGet($id); //$id 可以改成$_GET[‘id‘]
35             break;
36         case ‘tougao‘:
37 
38             break;
39         case ‘tougaosave‘:
40             $info[‘pics‘]=deformat_focus_img(‘pics‘); //多图上传的特殊处理,其他类型不需要
41 
42             print_r($info);
43             exit();
44 
45             /*
46             $op=Hello::dataInsert($info);
47 
48             if($op)
49             {
50                 echo ‘文章投稿成功,ID为‘.$op;
51             }
52             else
53             {
54                 echo ‘文章投稿失败‘;
55             }
56             exit();
57             */
58             break;
59         //以下 case 条件仅为 示例。您可以根据业务逻辑自由修改和拓展
60 
61         //case ‘index‘:
62 
63             //在此写 index.php?m=hello&a=index 时的逻辑
64 
65             //break;
66 
67         //case ‘list‘:
68 
69             //在此写 index.php?m=hello&a=list 时的逻辑
70 
71             //break;
72 
73         //以此类推...
74 
75         //case ‘...‘:
76 
77             //在此写 index.php?m=hello&a=... 时的逻辑
78 
79             //break;
80 
81         default:
82             break;
83     }
84 ?>

效果:

技术分享

小贴士:
传统操作的MySql::mysqlDelete()方法等同于连贯操作的delete()方法,用于删除记录。但是连贯操作更简洁易懂。

 

总结:在1.1.3+版本的phpWeChat中已兼容支持这两种MySql数据库操作方案,您可以根据自己的喜好来定夺采取何种方式。

 

10天学会phpWeChat——第九天:数据库增、删、改、查(CRUD)操作

标签:web应用   二维数组   建议   tag   1.3   数据库   desc   mit   包含   

人气教程排行