0

では、最初の質問です。

私が書いているモジュールのアクティブ化で実行される関数は、電子メール テンプレートを MySQL データベースに配置する必要があります。問題は、これらがスマートなテンプレートであり、{$vars} を使用していることです。PHP でこれを行うと、{$vars} は PHP 変数として解釈され、実行前に SQL クエリに入れられます。

「{$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)"

そして、これが上記で作成された電子メール テンプレートになります。

Some text that contains {$company_name} among other things

しかし、代わりにこれを作成します:

Some text that contains 

どんな助けでも大歓迎です!

4

2 に答える 2

6

文字列が二重引用符またはヒアドキュメントで指定されている場合、変数はその中で解析されます。

注: 二重引用符やヒアドキュメントの構文とは異なり、特殊文字の変数とエスケープ シーケンスは、単一引用符で囲まれた文字列内にある場合は展開されません。

'の代わりに使用"

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 に答える