symfony3.x 命令行操作Command
Symfony3.x.x通过命令行操作数据库
-
配置app/config/parameters.yml
parameters: database_host: 127.0.0.1 database_port: 3306 database_name: test database_user: root database_password: null mailer_transport: smtp mailer_host: 127.0.0.1 mailer_user: 127001@qq.com mailer_password: null secret: 8ab34c9326ac123b2dea2fab13e4ab -
配置app/config/config.yml
doctrine: dbal: driver: pdo_mysql host: "%database_host%" port: "%database_port%" dbname: "%database_name%" user: "%database_user%" password: "%database_password%" charset: UTF8 - 创建TestBundle
- 在TestBundle目录(文件夹)下,新建Command目录(文件夹)
-
在Command目录新建TestCommand.php,代码如下:
<?php //src/TestBundle/Command/TestCommand.php namespace TestBundle\Command; use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputOption; class TestCommand extends ContainerAwareCommand { protected function configure() { $this->setName('database:run') ->setDescription('Run an action.') ->addArgument('name', InputArgument::OPTIONAL, 'Chouse an action to run.') ->addOption('show', null, InputOption::VALUE_NONE, 'Show result.'); } protected function execute(InputInterface $input, OutputInterface $output) { $name = $input->getArgument('name'); if ($name == 'action1'){ $text = $this->myAction1(); }elseif($name == 'action2') { $text = $this->myAction2(); }elseif($name == 'action3') { $text = $this->myAction3(); }else { $text = 'Error[101]:Cmd error.'; } if (!$input->getOption('show')){ $text = NULL; } $output->writeln($text); } protected function myAction1() { //这句非常重要 $conn = $this->getContainer()->get('database_connection'); $bool= $conn->exec( //这里的SQL语句自己定义 'INSERT INTO 表名(id,live,age)VALUE(1,\'dog\',20)' ); $conn = null; if($bool) $str = "Action1 has been executed."; else $str = "Not insert data."; return $str; } protected function myAction2() { if(true) $str = "Action2 has been executed."; else $str = "Did not perform any action!"; return $str; } protected function myAction3() { if(true) $str = "Action3 has been executed."; else $str = "Did not perform any action!"; return $str; } } -
尝试在命令行执行:
Php bin/console --show database:run action1(1)如果返回:Action1 has been executed.说明操作成功;
(2)如果返回:Not insert data.就要检查自己的sql语句是否有误
- 如果命令行中不输入:‘--show’表示不显示执行结果。
- action1 也可以是action2、action3。
意义
Symfony通过命令行操作数据库的意义在于
- 可以将方法不和URL进行绑定,实现方法的运行,有效防止sql注入;
- 由于命令定义的灵活性,非内部人员不知道你的命令行的格式,也不知道其实现何种操作。
关注公众号
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
Ubuntu 18.04.1 搭建Java环境和HelloWorld
一、搭建Java环境 系统环境 Ubuntu 18.04.1 JDK 8 IDEA 2018.2 1.下载JDK 官网地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html 选择相应的版本,点击jdk,进入下载页面,选择“Linux x64”版本的后缀为“xxx.tar.gz”的Liunx压缩包。 2.解压JDK压缩包 在下载中找到压缩包,双击文件,把目录中的文件拖拽到"/home/stone/java/"目录下(相当与手动解压),"/home/stone/java/"文件为我自己电脑的目录,用户可根据自己目录结构存放,如下图所示: 不要问我的Ubuntu怎么这么像Mac系统,我是不会告诉你,我装的是Mac主题。 3.配置全局系统变量 打开命令行工具,输入命令: $sudo gedit ~/.bashrc 此命令是修改全局变量文件,把如下代码粘贴到文件最后: export JAVA_HOME=/home/stone/java/jdk1.8.0_181 export JRE_HOME=${JAVA_HOM...
-
下一篇
使用 dlv 调试go 程序
目录 使用 dlv 调试smartraiden 一 正常启动 smartraiden 二 dlv 调试 三 dlv attach 使用 dlv 调试smartraiden by 白振轩 使用 dlv 调试smartraiden 一 正常启动 smartraiden 二 dlv 调试 三 dlv attach goroutines -s 查看所有 goroutine 的栈 解决问题 对于程序运行过程中碰到的莫名其妙的问题,比如不明原因的阻塞,命令行 dlv 调试可能比 ide 调试效果更好 一 正常启动 smartraiden ./smartraiden --datadir=.smartraiden --api-address=0.0.0.0:5001 --listen-address=127.0.0.1:40001 --address="0x292650fee408320D888e06ed89D938294Ea42f99" --keystore-path ~/privnet3/keystore --registry-contract-address 0xf450955d87F23DF5...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Docker容器配置,解决镜像无法拉取问题
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Crontab安装和使用
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Red5直播服务器,属于Java语言的直播服务器
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作

微信收款码
支付宝收款码