本文目录一览:
- 1、求教:tp5控制器引用模型报错,提示类未找到Class 'app\index\model\User' not found
- 2、如何Mysql触发器中抛出一个异常
- 3、thinkphp5 怎么同时连接mysql和sqlserver 2种数据库
- 4、tp5插入mysql数据,用param不能插入
- 5、用tp5连接mysql数据库怎么提示这个错误啊,应该怎么解决啊
求教:tp5控制器引用模型报错,提示类未找到Class 'app\index\model\User' not found
tp5控制器引用模型报错,提示类未找到Class 'app\index\model\User' not found是使用错误造成的,解决方法为:
1、tp5下基本的应用, 模块和视图目录的层级关系。
2、接下来需要在Index 控制器中,定义一个方法。
3、接下来需要在视图目录view中的对应关系。
4、在article.html中写入内容,并保存即可,如图所示,
如何Mysql触发器中抛出一个异常
从Mysql 5.5 开始为我们提供了SIGNAL函数来实现这个功能。
[sql] view plain copy
CREATE TRIGGER `tg_order_create` AFTER INSERT ON `tp_order` FOR EACH ROW BEGIN
DECLARE msg varchar(200);
/*冻结金额*/
IF 2=NEW.condition THEN
UPDATE `tp_user` SET `frozen_amount`=`frozen_amount`+NEW.amount WHERE `id`=NEW.uid AND `amount`-`frozen_amount` NEW.amount;
/*如果余额不足,产生一个错误*/
IF ROW_COUNT() 1 THEN
set msg = "用户余额不足以完成支付.";
SIGNAL SQLSTATE 'HY000' SET MESSAGE_TEXT = msg;
END IF;
/*扣除金额*/
ELSEIF 3=NEW.condition THEN
UPDATE `tp_user` SET `amount`=`amount`-NEW.amount WHERE `id`=NEW.uid AND `amount`-`frozen_amount` NEW.amount;
/*如果余额不足,产生一个错误*/
IF ROW_COUNT() 1 THEN
set msg = "用户余额不足以完成支付.";
SIGNAL SQLSTATE 'HY000' SET MESSAGE_TEXT = msg;
END IF;
END IF;
END;
这里这条触发器的功能是库存操作,当库存足够的时候 减少库存,否则 抛出一个异常并报告商品库存不足:
[sql] view plain copy
CREATE TRIGGER `TG_order_detail_dec_stock` BEFORE INSERT ON `tp_order_detail` FOR EACH ROW BEGIN
DECLARE msg VARCHAR(200);
UPDATE `tp_stock` SET `num`=`num`-NEW.num WHERE `goods_id`=NEW.goods_id AND `mid`=NEW.mid AND `num`=NEW.num;
IF ROW_COUNT() 1 THEN
SELECT CONCAT(`name`, ' 库存不足.') INTO msg FROM `tp_goods` WHERE `id`=NEW.goods_id;
SIGNAL SQLSTATE 'HY000' SET MESSAGE_TEXT = msg;
END IF;
END;
在PHP端的处理(注:使用ThinkPHP框架):
[php] view plain copy
//前面省略若干行....
try {
if (false === ($order_pk = $tbl_order-add($order))) {
$tbl-rollback();
echo json_encode(array('success' = -1, 'message' = "创建订单失败!."), JSON_UNESCAPED_UNICODE);
return;
}
}catch (\PDOException $e){
$errInfo=$e-errorInfo[2];
$tbl-rollback();
echo json_encode(array('success' = -1, 'message' = "创建订单失败!,{$errInfo}"), JSON_UNESCAPED_UNICODE);
return;
}
//后面省略若干行....
thinkphp5 怎么同时连接mysql和sqlserver 2种数据库
到微软官网下载文件,网址:百度搜索选择“SQLSRV20.EXE”,点击"next"(下一步),进行下载右键解压到当前目录,把这两个文件拷贝到PHP目录下的ext目录下下图是拷贝后的结果,请参考,不要拷错了。打开php-ini在文件中设置,加上下面两行代码,如下图下面这里设置为On,保存,重启服务,如下图修改thinkphp配置文件,如下图thinkphp控制器文件,随便查个sqlserver表中的数据,看是否能成功打印,如果成功打印,那么证明数据库连接成功。如果不能正确打印,那么看报错提示,在按照提示解决问题。
tp5插入mysql数据,用param不能插入
MySQL安装的根目录下有一个配置文件my.ini,添加sql_mode属性:sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES。即可
MySQL 查看数据表结构以及详情的方法:
一、 查看表结构
下面三个是我们最常用的查看数据表结构的语句:
1、desc table
2、describe table
3、show columns from tbale
如果你在控制台一次输入,就会发现这三个语句所打印的结果是一样的。
比如我在本地study_test_db数控中尝试查看info表的结构,结果如下:
二、查看建表语句详情
1、语句:show create table info
2、这里直接回车的话,结果可能比较乱,如果需要的话,可以再后面 ; 处替换为\G,这样结果就会竖直打印,看起来更清晰明白。
3、比如这里我还是以info表为例:
三、通过mysql中自带的information_schema数据库,查看表信息
可以通过查询tables和colums表来查看具体的数据表信息
其中:
1、TABLES表:提供了关于数据库中的表的信息(包括视图)。详细表述了某个表属于哪个schema,表类型,表引擎,创建时间等信息。是show tables from schemaname的结果取之此表。
2、COLUMNS表:提供了表中的列信息。详细表述了某张表的所有列以及每个列的信息。是show columns from schemaname.tablename的结果取之此表。
用tp5连接mysql数据库怎么提示这个错误啊,应该怎么解决啊
上面提示错误的mysql用户跟你所提供的配置文件的用户名都不一样,检查一下你是否还有别的配置文件,tp5针对不同模块可以有不同的数据库配置,你把他们全都找出来复查一遍试试,希望对你有帮助