数据库可以存php代码,php把数组保存数据库程序代码

我们在做缓存文件时经常会要把php代码或数组转换成字符串保存到数据库中,下面我来介绍两种把数组保存到数据库的方法。

方法一:

用serialize写入,再用unserialize输出

serialize()就是将PHP中的变量如对象(object),数组(array)等等的值序列化为字符串后存储起来.序列化的字符串我们可以 存储在其他地方如数据库、Session、Cookie等,序列化的操作并不会丢失这些值的类型和结构。这样这些变量的数据就可以在PHP页面、甚至是不 同PHP程序间传递了。

而unserialize()就是把序列化的字符串转换回PHP的值。返回的是转换之后的值,可为 integer、float、string、array 或 object如果传递的字符串不可解序列化,则返回 FALSE

 代码如下复制代码

class db {

private $host;

private $user;

private $pwd;

private $dbname;

private $Mysqli;

function __construct($host, $user, $pwd, $dbname) {

$this->host = $host;

$this->user = $user;

$this->pwd = $pwd;

$this->dbname = $dbname;

$this->db();

}

function db() {

$this->mysqli = new mysqli ( $this->host, $this->user, $this->pwd, $this->dbname );

}

function select() {

$this->mysqli->query("SET CHARSET GBK");

$sql = "SELECT id,cname FROM hdw_channel";

$result = $this->mysqli

->query ( $sql );

$rows = array ();

while ( $row = $result->fetch_assoc () ) {

$rows [] = $row;

}

ECHO "

";

print_r ( $rows );

}

function __wakeup(){   //反序列化,

$this->db();

}

}

$chanel = new db("localhost",'root','','hdcms');

//$chanel->select();

session_start();

$_SESSION['channel_obj'] = serialize($chanel);   //将对象序列化,保存的是对象的属性,没有方法,所以要用__wakeup()

class ren{

private $name;

private $age;

function __construct($name,$age){

$this->name =$name;

$this->age = $age;

}

function show(){

echo "姓名是:{$this->name}  年龄是:{$this->age}";

}

function __sleep(){

return array_keys(get_object_vars($this));  //或得数组里边的键名,序列化某些变量

}

}

$zao = new ren("赵六",44);

echo serialize($zao);       //序列化(指定哪个变量序列化)

====================================

session_start();

include '59.php';

$channel_obj=unserialize($_SESSION['channel_obj']);  //反序列化类对象

$channel_obj->select();  //有了__wakeup方法才可以起作用

方法二:

用json_encode写入,再用json_decode输出

json_encode之前,把所有数组内所有内容都用urlencode()处理一下,然用json_encode()转换成json字符串,最后再用urldecode()将编码过的中文转回来。

 代码如下复制代码

/**************************************************************

*

* 使用特定function对数组中所有元素做处理

* @param string &$array  要处理的字符串

* @param string $function 要执行的函数

* @return boolean $apply_to_keys_also  是否也应用到key上

* @access public

*

*************************************************************/

function arrayRecursive(&$array, $function, $apply_to_keys_also = false)

{

static $recursive_counter = 0;

if ( $recursive_counter > 1000) {

die('possible deep recursion attack');

}

foreach ($array as $key => $value) {

if (is_array($value)) {

arrayRecursive($array[$key], $function, $apply_to_keys_also);

} else {

$array[$key] = $function($value);

}

if ($apply_to_keys_also && is_string($key)) {

$new_key = $function($key);

if ($new_key != $key) {

$array[$new_key] = $array[$key];

unset($array[$key]);

}

}

}

$recursive_counter--;

}

/**************************************************************

*

* 将数组转换为JSON字符串(兼容中文)

* @param array $array  要转换的数组

* @return string  转换得到的json字符串

* @access public

*

*************************************************************/

function JSON($array) {

arrayRecursive($array, 'urlencode', true);

$json = json_encode($array);

return urldecode($json);

}

$array = array

(

'Name'=>'希亚',

'Age'=>20

);

echo JSON($array);

?>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/521761.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实践心得:从读论文到复现到为开源贡献代码

摘要: 本文讲述了从在fast.ai库中读论文,到根据论文复制实验并做出改进,并将改进后的开源代码放入fast.ai库中。介绍去年我发现MOOC网上有大量的Keras和TensorKow教学视频,之后我从零开始学习及参加一些Kaggle比赛,并在…

python xml etree word_使用python格式化插入的元素xml.etree模块,包括新行

我正在将一个元素插入到一个大的xml文件中。我希望插入的元素位于顶部(所以我需要使用根.插入方法,并且不能仅附加到文件中)。我也希望元素的格式与文件的其余部分相匹配。在原始XML文件的格式为....然后运行以下代码:^{pr2}$它以以下形式创建输出&#…

(vue基础试炼_08)Vue模板语法

文章目录一、插值表达式二、v-text 中不是字符串而是js表达式三、v-html四、js表达式&#xff0c;可以和字符串拼接五、源码链接一、插值表达式 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Vue模…

FPGA设计中遇到的奇葩问题之“芯片也要看出身”

阿里云资深专家隐达分享了他十余年工作经历中的一段奇葩历程。文章诙谐幽默&#xff0c;用玄幻小说的写法分享技术问题&#xff0c;非常值得大家一读。 &#xff08;一&#xff09;昨夜西风凋碧树。独上高楼&#xff0c;望尽天涯路2000年的时候&#xff0c;做设计基本都是使用X…

php msgid排重,如何应用php数组对百万数据停止排重

如何应用php数组对百万数据停止排重如何应用php数组对百万数据停止排重在往常的工作中&#xff0c;常常接到要对网站的会员停止站内信、手机短信、email停止群发信息的告诉&#xff0c;用户列表普通由别的同事提供&#xff0c;当中难免会有反复&#xff0c;为了避免反复发送&am…

FPGA资源平民化的新晋- F3 技术解析

摘要&#xff1a; FPGA (现场可编程门阵列)由于其硬件并行加速能力和可编程特性&#xff0c;在传统通信领域和IC设计领域大放异彩。一路走来&#xff0c;FPGA并非一个新兴的硬件器件&#xff0c;由于其开发门槛过高&#xff0c;硬件加速算法的发布和部署保护要求非常高&#xf…

Vue计算属性、方法、侦听器

文章目录一、基础计算模板二、计算属性computed三、方法methods四、侦听器watch五、总结六、源码地址一、基础计算模板 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Vue计算属性、方法、侦听器<…

python数据分析简答题_Python数据分析与数据可视化-中国大学mooc-试题题目及答案...

Python数据分析与数据可视化-中国大学mooc-试题题目及答案更多相关问题【简答题】城轨供电系统按功能划分为几部分&#xff1f;各有什么作用&#xff1f;【多选题】影响债券价格的因素有【单选题】关于注射剂的质量要求&#xff0c;叙述错误的是 prefix\"o\" ns\&quo…

漫画:五分钟看懂车联网

戳蓝字“CSDN云计算”关注我们哦&#xff01;福利扫描添加小编微信&#xff0c;备注“姓名公司职位”&#xff0c;加入【云计算学习交流群】&#xff0c;和志同道合的朋友们共同打卡学习&#xff01;推荐阅读&#xff1a;华为 | 泰山之巅 鲲鹏展翅 扶摇直上九万里聊聊我是如何在…

对数据科学家来说最重要的算法和统计模型

摘要&#xff1a; 本文提供了工业中常用的关键算法和统计技术的概要&#xff0c;以及与这些技术相关的短缺资源。作为一个在这个行业已经好几年的数据科学家&#xff0c;在LinkedIn和QuoLa上&#xff0c;我经常接触一些学生或者想转行的人&#xff0c;帮助他们进行机器学习的职…

JAVA ulimit,java-从linux中的jvm中查找硬打开和软打开文件限制(ulimit -n和ulimit -Hn)

我有一个问题,我需要从Java / groovy程序中找出Linux中进程的硬打开和软打开文件限制.当我从终端执行ulimit时,它将为硬打开文件限制和软打开文件限制提供单独的值.$ulimit -n1024$ulimit -Hn4096但是,如果我以常规方式执行它,它将忽略软限制并始终返回硬限制值.groovy> [ba…

计算属性的setter和getter

computed的属性不仅可以写一个get方法&#xff0c;通过其他的值算出一个新值&#xff1b;同时&#xff0c;也可以设置set方法&#xff0c;通过设置一个值&#xff0c;来改变他相关联的值&#xff01;而改变了相关联的值之后&#xff0c;又会引起fullName的重新计算&#xff0c;…

python制作远程桌面控制_Python 远程桌面协议RDPY简介

RDPY 是基于 Twisted Python 实现的微软 RDP 远程桌面协议。RDPY 提供了如下 RDP 和 VNC 支持&#xff1a;RDP Man In The Middle proxy which record sessionRDP HoneypotRDP screenshoterRDP clientVNC clientVNC screenshoterRSS Player目前能够找到的关于RDPY的中文介绍确实…

华为愿出售5G技术渴望对手;苹果将向印度投资10亿美元;华为全联接大会首发计算战略;腾讯自研轻量级物联网操作系统正式开源……...

戳蓝字“CSDN云计算”关注我们哦&#xff01;嗨&#xff0c;大家好&#xff0c;重磅君带来的【云重磅】特别栏目&#xff0c;如期而至&#xff0c;每周五第一时间为大家带来重磅新闻。把握技术风向标&#xff0c;了解行业应用与实践&#xff0c;就交给我重磅君吧&#xff01;重…

数组元素反序

和前面的字符串逆向输出有异曲同工之妙 第一位和最后一位交换位置&#xff0c;然后用比大小循环 那么接下来修改一下这个程序&#xff0c;我们接下来解释一下p的概念 画图解释&#xff1a; 在最前面的 定义的时候&#xff0c;我们将p&#xff08;0&#xff09;定义在了1上&…

如何计算Java对象所占内存的大小

摘要&#xff1a; 本文以如何计算Java对象占用内存大小为切入点&#xff0c;在讨论计算Java对象占用堆内存大小的方法的基础上&#xff0c;详细讨论了Java对象头格式并结合JDK源码对对象头中的协议字段做了介绍&#xff0c;涉及内存模型、锁原理、分代GC、OOP-Klass模型等内容。…

hilbert谱 matlab,怎么在matlab中做信号hilbert边际谱分析

摘要&#xff1a;传统的数字滤波器的设计过程复杂&#xff0c;计算工作量大&#xff0c;滤波特性调整困难&#xff0c;影响了它的应用。本文介绍了一种利用MATLAB信号处理工具箱(Signal Processing Toolbox)快速有效的设计由软件组成的常规数字滤波器的设计方法。给出了使用MAT…

时间序列数据的处理

摘要&#xff1a; 随着云计算和IoT的发展&#xff0c;时间序列数据的数据量急剧膨胀&#xff0c;高效的分析时间序列数据&#xff0c;使之产生业务价值成为一个热门话题。阿里巴巴数据库事业部的HiTSDB团队为您分享时间序列数据的计算分析的一般方法以及优化手段。演讲嘉宾简介…

saas java框架_XMReport-提供web项目Java套打解决方案

简介XMReport是国内首款支持在线编辑&#xff0c;维护的控件式报表产品。XMReport报表产品分为设计器与引擎两个部分&#xff0c;其中报表设计器是完全基于HTML5技术&#xff0c;提供优秀跨平台的支持&#xff0c;用户无需安装客户端或者插件&#xff0c;仅使用浏览器即可进行报…

只有程序员才能读懂的西游记

戳蓝字“CSDN云计算”关注我们哦&#xff01;这其实一个有关计算机网络协议的故事一、我佛造经传极乐话说我佛如来为度化天下苍生&#xff0c;有三藏真经&#xff0c;可劝人为善。就如图中所示&#xff0c;真经所藏之处&#xff0c;在于云端。佛祖所管辖之下&#xff0c;有四个…