首页 > 后端开发 > 正文

php怎么修改数据框架 网站如何实现多语言架构,比如同时支持中,英,法,俄

2023-09-28 15:45:59 | 我爱编程网

小编今天整理了一些php怎么修改数据框架 网站如何实现多语言架构,比如同时支持中,英,法,俄相关内容,希望能够帮到大家。

php怎么修改数据框架 网站如何实现多语言架构,比如同时支持中,英,法,俄

网站如何实现多语言架构,比如同时支持中,英,法,俄

电子商务网站多语言版设计思路
我爱编程网

1.数据库设计

1.分库,还是分表

2.单表还是多表1234

这步其实很关键:首先这直接涉及到代码逻辑,一有不慎,可能会导致原有方案失效

说说我们的设计思路吧!

我们采用的是分库方式!

一种语言一个数据库

这样的好处有哪些呢?

1.避免单库数据量过大,导致查询难以优化。

举个例子:假设有2种语言,中文和英文。在商品表中,一个商品在不同语言下,其实还是同一件商品,他们有共同的属性,共同的价格,共同的库存等等;如果放在一个库中那么本来商品数据有100W,现在直接变成了200W。so优化起来是不是更麻烦了呢。而且对于像商品这种表,更新操作是非常频繁的,这样就要不断的去维护索引,这其中开销也是蛮大的。12

-为什么不用分表??

假如一种语言一个表,那跟分库道理不就一样了吗??

其实我个人觉得分表有很多不足的地方。

如果采用一个语言一张表,那么我们表的数据过大怎么办呢?这时候是不是还要继续分表呢?就目前的状况来看,很多公司都会采用分表去解决。也就是说要分2次表,这样不是很麻烦吗,而且表在同一个数据库中,数据量变大的时候怎么办呢,当达到Mysql储存上限(这里指的是mysql存储到一定数据时候就变得难以优化的情况)不就更麻烦吗??

所以我们采用了分库策略。

表如何设计

需要中英文对于的表,放到对于的库中即可,无需把所有的表都copy

举个例子?

商品表:

?id?title?stockstatus1

假设我们的商品字段如上?

这个时候我们添加商品的时候肯定是要往数据库(多个语言)里面添加数据。也就是说我添加了一个中文语言的商品,对应的英文数据库也应该插入同样的数据。然后再去编辑英文的商品数据。这样就保证了一个商品是一定会有多语言的。?

那么我们如何做到同时添加?

1.刚开始想用触发器直接同步添加,可是这样一个库就要建立一个触发器?很显然,这样肯定就会陷入一个死循环中。(事实上MySQL是会报错的,为什么我就不说了)。所以这种偷懒的方案是不能实现得了啊。?

2.后来我想用存储过程去实现,但是呢,存错过程确实存在不少问题,可以参考我的一片文章?MySQL存储过程的优缺点?。so只能放弃这种方案?

3.修改PHP框架的数据库操作方法。?

我们采用的是THINKPHP。这里说下如何修改tp的add.?

tp的add方法是声明在Model下。所以我们新建一个commonModel来继承他的Model类

首先要在配置文件中配置好多个数据库dsn

eg:'DB_LIST'=>array('DN_CN'=>'mysql:XXXX',?????????????'DN_EN'=>'mysql:XXXX'

?????????????);1234

配置公共数据库的表

eg'LANG_TABLE'=>array(??'goods'=>array('stock,status'),//这里配置的是该表需要更新的字段;比如商品的库存和状态肯定都是一致的)123

以下是伪代码protected$dbName;?//数据库名protected$tableName;//表名protected$data;?//ORM创建的数据对象protecteds$option;?//查询条件等function__construct(){}functionadd($data,$option,$replace){

??if(!$data)??$data=$this->data;//如果是create的话,那么add一次之后,$this->data会被清空

??parent::add($data,$option,$replace);//往当前库插入数据

??//切换数据库

??$this->dbName='XXXX';?//这里我们的库都在同一台服务器上,所以不用重新连接

??//如果在不用数据库,那么就读取DB_LIST配置来重新连接数据库。$this->db($id,$dsn);这样切换了数据库

??parent::add($data,$option,$replace);

??//切换回当前数据库

??$this->dbName='xxx';

}12345678910111213141516171819202122

删除也是同理

更新数据

一个表中肯定会有一些字段是不用做多语言的,但是必须保证不用语言下的数据是一致的。比如商品价格,商品库存等?

这个时候更新了一条记录,也要去同步下其他库的数据

正如上面配置。我们只需要把需要同步的字段配置好就行了functionsave($data,$option){

??parent::save($data,$option);??//切换数据库

??//对比$data的key也配置的字段,取交集$field

??parent::save($field,$option);?//如果是create的数据,记得对data进行赋值}

其他tp的操作方法(如execute?addAll)我就不演示了。12345678910

其实上面是很简单的。真正的重点在下面

我们取商品的数据的时候通常是通过id去查询。

那么我们多个库的时候,要取数据还能用id吗?

如果能用id那么这篇文章已经结束了,哈哈!

那么为什么不能用id了呢?

其实很简单的道理:你没办法保证多个语言库的id是一致的,因为我们id是increament,soid没办法同步?举个例子:A用户往中文库插入一条数据,id为100,这时候b用户往英文表插入一条数据id也有100,(这种情况是很有可能发生的,所以id肯定会不一样)?

换个角度想想:如果我们加事务呢,这样是不是能保证数据一致性呢?其实这更可怕,很可能会造成死锁!

Why??死锁其实道理很简单。

A用户往中文库插入一条数据,id为100,这时候中文库的表肯定被锁住了,这时候b用户往英文表插入一条数据id也有100,这时候英文库的表也被锁住了。但是他们又要同步到其他库。这时候A这边会发现英文库的表锁了,那么它要插入数据就必须等英文库的表解锁。但是与此同时b用户也会发现中文库的表锁了,它也要等解锁。这样就造成了双方都在等。死锁就这样形成了。?

所以id是很不靠谱的。

解决方案:?

新增一个字段,类型为int,该字段的生成规则可是时间戳+随机数(这里面还涉及到一些算法,我就不公布了)。(为什么是int我就不解释了,很简单的道理)。这样多个语言的数据就通过此字段来获取(因为这个值是事先生成的,每个库的值都是一样的,所以不会冲突)。

php怎么修改数据框架 网站如何实现多语言架构,比如同时支持中,英,法,俄

phpcms网站搬家迁移后怎样修改数据库配置文件

1找到源码文件中'caches'文件夹
2打开'caches'文件夹后找到‘configs‘文件夹
3找到‘configs‘文件夹后找到database.php文件
4将database.php文件保存到桌面,用软件进行打开文件
5这时候我们就能开始进行配置文件了,我们对数据库名称、数据名名、数据库密码进行正确填写即可完成
有用望采纳

php怎么修改数据框架 网站如何实现多语言架构,比如同时支持中,英,法,俄

PHP如何处理MySQL数据库


PHP如何处理MySQL数据库?
PHP如何处理MySQL数据库?
PHP是一种流行的服务器端脚本语言,主要用于Web开发。MySQL是一种流行的关系型数据库管理系统。PHP与MySQL的结合让开发人员可以轻松地构建动态网站和Web应用程序。在本文中,我们将介绍PHP如何处理MySQL数据库。
1.链接到MySQL数据库
在PHP中,可以使用mysqli或PDO扩展来连接到MySQL数据库。下面是一个使用mysqli扩展连接到数据库的示例代码:
`
$servername=localhost;
$username=yourusername;
$password=yourpassword;
$dbname=yourdatabase;
//创建连接
$conn=mysqli_connect($servername,$username,$password,$dbname);
//检查连接
if(!$conn){
die(Connectionfailed:.mysqli_connect_error());
}
`
以上代码通过mysqli_connect()函数创建与MySQL数据库的连接,并检查连接是否成功,如果连接不成功,则输出相应的错误信息。
2.执行MySQL查询
一旦连接到了MySQL数据库,就可以使用PHP来执行MySQL查询。下面是一个使用PHP查询MySQL数据库的示例代码:
`
$sql=SELECT*FROMcustomers;
$result=mysqli_query($conn,$sql);
if(mysqli_num_rows($result)>0){
//输出数据
while($row=mysqli_fetch_assoc($result)){
echoid:.$row[id].Name:.$row[name].Email:.$row[email].
;
}
}else{
echo0结果;
}
`
以上代码执行一个SELECT查询,并使用mysqli_query()函数从数据库中检索数据。检查结果是否存在数据,然后使用mysqli_fetch_assoc()函数提取每条记录数据,并输出结果。
3.增删改查数据
除了SELECT查询之外,也可以使用PHP执行INSERT、UPDATE和DELETE等操作来增删改查数据。下面是一些示例代码:
插入新数据
`
$sql=INSERTINTOcustomers(name,email,phone)
VALUES(JohnDoe,johndoe@example.com,555-555-5555);
if(mysqli_query($conn,$sql)){
echo新记录已成功插入;
}else{
echoError:.$sql.
.mysqli_error($conn);
}
`
更新数据
`
$sql=UPDATEcustomersSETname=JaneDoeWHEREid=1;
if(mysqli_query($conn,$sql)){
echo记录已成功更新;
}else{
echoErrorupdatingrecord:.mysqli_error($conn);
}
`
删除数据
`
$sql=DELETEFROMcustomersWHEREid=1;
if(mysqli_query($conn,$sql)){
echo记录已成功删除;
}else{
echoErrordeletingrecord:.mysqli_error($conn);
}
`
以上代码演示了如何使用PHP执行增删改查MySQL数据库中的数据。
总结
PHP与MySQL的结合为Web开发提供了强大的功能。本文介绍了如何使用PHP连接到MySQL数据库,并使用PHP执行MySQL查询、增删改查数据。了解这些基本概念可以让开发人员更好地构建动态网站和Web应用程序。

以上就是我爱编程网小编为大家带来的内容了,想要了解更多相关信息,请关注我爱编程网。
与“php怎么修改数据框架 网站如何实现多语言架构,比如同时支持中,英,法,俄”相关推荐
php中tp框架修改数据 PHP+Ajax如何实现表格的实时编辑
php中tp框架修改数据 PHP+Ajax如何实现表格的实时编辑

使用TP框架在搜索后修改一条记录提交后返回到之前搜索出来的数据信息比如搜索id=1得N条数据修改其中一条然后返回ID=1这样的话我们需要在get里面加点东西比如index.php?id=1修改页面kk.php?pid=2&id=1或者你用cook来储存搜索条件说的再多就是用一个东西来储存搜索条件或者用JShistory.back()ph

2023-10-04 16:07:34
PHP框架的修改语句 php如何修改数据库内容
PHP框架的修改语句 php如何修改数据库内容

PHP修改数据库方法有几种PHP修改数据库方法有几种在php开发过程中,我们需要连接数据库来开发动态网站,连接数据库通常有四种方式:Mysql-connect(),Mysqli,PDO,ADODB,我们可以利用这4中连接数据库的方式进行数据库修改,接下来一一介绍。Mysql_connect这是我们刚开始学习php时最开始碰到到的数据库连接方式,通过mysql_connect(

2023-09-15 06:07:32
php框架修改config 网站数据库如何修改 config.php文件的配置问题
php框架修改config 网站数据库如何修改 config.php文件的配置问题

网站数据库如何修改config.php文件的配置问题$db_host="数据库地址:3306";//databasename$db_name="数据表名";//databaseusername$db_user="数据库用户名";//databasepassword$db_pass="数据库密码";//ta

2023-09-07 05:11:39
php数据库框架oracle 如何让PHP支持Oracle
php数据库框架oracle 如何让PHP支持Oracle

如何让PHP支持OraclePHP操作Oracle数据库,官方推荐的方法是采用OCI8扩展。PHP操作Oracle数据库,官方推荐的方法是采用OCI8扩展。网上关于开启PHPOCI8扩展的方法,大致如下:(1)去掉php.ini(先用phpinfo看一下你的php.ini在什么位置,不要改错了)中extension=php_oci8.dll的注释。并保证php_

2023-09-28 17:48:25
php框架怎么修改数据 PHP修改数据库2
php框架怎么修改数据 PHP修改数据库2

PHP修改数据库2修改页面:<?php$host="服务器";$user="用户名";$pass="密码";$db="数据库名";$conn=mysql_connect($host,$user,$pass);mysql_select_db($db,$conn);mysql_query("SETNAMES'gbk'");?><?ph

2023-09-28 09:18:14
php网站框架修改 如何用Dreamweaver调试PHP开源网站,简单修改?
php网站框架修改 如何用Dreamweaver调试PHP开源网站,简单修改?

如何修改网页架构首先跟公司要网站服务器的FTP账号密码然后用cuteftp软件1.文件-新建-FTP站点。2.标签随便写3.输入网站域名或者网站IP4.输入FTP用户名密码5.登录方法普通。6.连接成功。7.进入web目录双击下载到本地修改,在双击上传到服务器。8.结束。php程序首页栏目如何修改php程序首页栏目修改如下:1、打开目录:phpcms

2023-09-06 12:12:37
php框架怎么修改数据 PHP要实现一个编辑功能,点击编辑按钮能修改数据库中一条记录
php框架怎么修改数据 PHP要实现一个编辑功能,点击编辑按钮能修改数据库中一条记录

PHP修改数据库问题你的错误主要在这里$sql="UPDATEsymbolsSETcountry='$_POST[country]',animal='$_POST[animal]',cname='$_POST[cname_]'WHEREsymbols.id=$_POST[id]";当存在中文字符时,中文字符用''包围,而英文字符不用,否则会出错的。像这种symbols.id,句号

2023-09-28 09:17:19
php图片的框架怎么修改 PHP源码如何修改?
php图片的框架怎么修改 PHP源码如何修改?

PHP源码如何修改?PHP源码用记事本就可打开编辑了,当然用DW也可以。图片背景要改,可要看清图片的链接(或者直接将图片改成你要的图片也可),改文字格式要通过CSS来修改,链接的话,应该在网站后台就能修改。不过,这样改太累了点!而且PHP的网页无法直接在IE中预览。建议你下载一个DEDECMS的企业版,然后把相关的图片(如Logo.gif)改成自己的,网站的频道(栏目)、链接都可以在

2023-09-25 00:09:35