使用 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 &lt;a href=www.google.de&gt;Link&lt;/a&gt; ok?所以,没有qoutes... 我刚刚尝试了建议的解决方案,它对我有用!一个小的旁注:手动构造 SQL 字符串是危险的(SQL 注入)并且容易出错(意外的错误)。但是,我认为mysql.exe 命令不允许您指定查询占位符。所以你需要在运行查询之前清理你的字符串。这仅适用于用户输入生成的字符串。 非常感谢!我也必须掩盖双引号!

以上是关于使用 PowerShell 中的双引号执行 MySQL-Command的主要内容,如果未能解决你的问题,请参考以下文章

用R中的双引号替换转义的双引号

循环遍历双引号但忽略单引号中的双引号

JavaScript中的双引号与单引号[重复]

PHP中的双引号和单引号的应用

存储过程中执行sql语句时如何转义双引号?

如何清除json中的双引号?