使用 PowerShell 中的双引号执行 MySQL-Command
Posted
技术标签:
【中文标题】使用 PowerShell 中的双引号执行 MySQL-Command【英文标题】:Execute MySQL-Command with double quote from PowerShell 【发布时间】:2015-08-04 08:11:44 【问题描述】:我不知道如何使用双引号从 PowerShell 4.0 执行 mysql-Command
SQL 查询:
$SqlQuery = @"
USE joomla; UPDATE jml_shoutbox SET msg = "$msg_neu" ORDER BY id DESC LIMIT 1;
"@
要插入的消息:
$msg_neu = "Dies ist ein <a href="www.google.de">Link</a> ok?"
也试过这个:
$msg_neu = 'Dies ist ein <a href="www.google.de">Link</a> ok?'
还有这个:
$msg_neu = "Dies ist ein <a href=`"www.google.de`">Link</a> ok?"
来自 PowerShell 的命令:
C:\xampp\mysql\bin\mysql.exe -u root -ppassword -e $SqlQuery
当我从 PS 执行时,我得到以下信息:
C:\xampp\mysql\bin\mysql.exe -u root -ppassword -e $SqlQuery 警告: 在命令行界面上使用密码可能不安全。 C:\xampp\mysql\bin\mysql.exe Ver 14.14 Distrib 5.6.11,适用于 Win32 (x86) 版权所有 (c) 2000, 2013,Oracle 和/或其附属公司。全部 保留权利。
Oracle 是 Oracle Corporation 和/或其 附属公司。其他名称可能是其各自所有者的商标。
用法:C:\xampp\mysql\bin\mysql.exe [OPTIONS] [database] -?, --help 显示此帮助并退出。 -I, --help - 的同义词? ...
但是当我直接在 mysql 上执行此操作时,它工作正常:
UPDATE jml_shoutbox SET msg = 'Dies ist ein <a href="www.google.de">Link</a> ok?' ORDER BY id DESC LIMIT 1;
有人有想法吗?
【问题讨论】:
【参考方案1】:$msg_neu = 'Dies ist ein <a href="www.google.de">Link</a> ok?'
$SqlQuery = @"
USE joomla; UPDATE jml_shoutbox SET msg = '$msg_neu' ORDER BY id DESC LIMIT 1;
"@
【讨论】:
MySQL 是否区分单引号和双引号?如果是,这不会改变查询的语义吗?转义双引号不是更好吗?那么语义被保留了吗?此外,添加一条小评论来解释您的答案对初学者会有帮助。 SQL 字符串使用单引号。 感谢您的回答。但是我执行完命令后,databse中字段的值为:Dies ist ein <a href=www.google.de>Link</a> ok?
所以,没有qoutes...
我刚刚尝试了建议的解决方案,它对我有用!一个小的旁注:手动构造 SQL 字符串是危险的(SQL 注入)并且容易出错(意外的错误)。但是,我认为mysql.exe
命令不允许您指定查询占位符。所以你需要在运行查询之前清理你的字符串。这仅适用于用户输入生成的字符串。
非常感谢!我也必须掩盖双引号!以上是关于使用 PowerShell 中的双引号执行 MySQL-Command的主要内容,如果未能解决你的问题,请参考以下文章