私は Magento と PHP については一般的にはまったくの初心者です。どちらも約 1 か月しか使用していないためです (私はソフトウェア エンジニアリングのインターンです)。私は、他のフルタイムの開発者と私自身が現在非常に困惑している問題を抱えています。
基本的に、いくつかの CMS 静的ページの内容を変更するための更新スクリプトを作成しています。正確な例を提供することはできませんが、私のスクリプトは基本的に次のようになります。
$installer = $this;
$installer->startSetup();
$htmlVariable = (html for static page goes here);
$sqlQuery = 'UPDATE cms_page SET content="'.$htmlVariable.'" WHERE identifier ="pageNameHere"';
$installer->run(sqlQuery);
これは非常に単純なページで機能することがわかりましたが、作成した $htmlVariable に次の p ブロックを含めると、次のことがわかりました。
<p>
What if I can't call toll free from the country I live in? <br/>
Feel free to send e-mail to
to place your order and they will advise you about the extra fees.
</p>
接続リセット エラーが発生します。「できない」からアポストロフィを削除すると、クエリは問題ありません。html 変数に以下を含めると、エラーが発生します。
<a href='mailto:info@example.com'><span>info@example.com</span></a>
ただし、アポストロフィも含む次のコードは問題ありません。
<h3 id='ca_shipping'>Page</h3>
htmlVariable がおそらく 2000 文字を超える場合も同じことが起こります。
MySQL Workbench からまったく同じクエリを実行し、問題なく正常に実行されるため、かなり混乱しています。また、Magento の .htaccess ファイルでエラー メッセージを有効にしていますが、Web ブラウザーで一般的な接続リセット エラー以外のエラーは発生しません。
私の唯一の推測は、SQL インジェクションを防ぐために、MySQL がおそらくアポストロフィをキャッチして終了しているということです。
なぜこれが起こっているのかについて、誰かが何らかの意見やアイデアを持っていることを望んでいました。