0

好的,第一个问题就到这里,

在激活我正在编写的模块时运行的函数需要将电子邮件模板放入 MySQL 数据库中。问题是这些是聪明的模板并使用 {$vars},现在当我在 PHP 中执行此操作时,{$vars} 被解释为 PHP 变量,以便在运行之前放入 sql 查询中。

如何告诉 PHP 不要将“{$var}”解释为变量而是字符串?

这是当前查询:

$sqlEmail1 = "INSERT INTO `tblemailtemplates` (`type`, `name`, `subject`, `message`, `attachments`, `fromname`, `fromemail`, `disabled`, `custom`, `language`, `copyto`, `plaintext`)
VALUES ('general', 'IPGeek - Custom Email 1', 'Password Reset', 'Some text that contains {$company_name} among other things', '', '', '', '', '1', '', '', 0)"

这应该是上面创建的电子邮件模板:

Some text that contains {$company_name} among other things

但它创建了这个:

Some text that contains 

任何帮助都会很高兴收到!

4

2 回答 2

6

当用双引号或 heredoc 指定字符串时,会在其中解析变量。

注意:与双引号和heredoc 语法不同,特殊字符的变量和转义序列在出现在单引号字符串中时不会被扩展。

使用'代替"

echo '{$var}';

或逃脱$

echo "{\$var}";

了解更多:php 字符串

更新:最小的努力修复只是在\之前添加$

$sqlEmail1 = "INSERT INTO `tblemailtemplates` (`type`, `name`, `subject`, `message`, `attachments`, `fromname`, `fromemail`, `disabled`, `custom`, `language`, `copyto`, `plaintext`)
VALUES ('general', 'IPGeek - Custom Email 1', 'Password Reset', 'Some text that contains {\$company_name} among other things', '', '', '', '', '1', '', '', 0)";
于 2012-06-17T11:40:26.523 回答
0

如何正确转义值?

我打赌你的模板中有 ' (撇号)。如果是这样,它会破坏你的 SQL 语法。

于 2012-06-17T12:19:09.237 回答