2017-01-10 8 views
-3

では認識できません。私はテキストに追加する方法だと思います。私はいくつかの異なる方法を試みましたが、どれも働いていません。変数をテキストで置き換えると、レコードはデータベースに追加されます。変数は、私は、このSQLクエリを持っている単一引用符

私は愚かなことを知っていますが、私はそれを理解することはできません。私はちょっと混乱しています。一重引用符を使用する場合は正直、二重引用符を使用する場合は別の理由である可能性があります。理由は分かりません。

+1

文字列では、別の一重引用符で単一引用符をエスケープしてください。例えば。 ''あなたのアプリケーションのステータス... ''。 – jarlh

+1

他に何かをする前に、いくつかの主要な問題を整理する必要があります。** **推奨されていない**安全でない** mysql_ *関数を使用しないでください。これらはPHP 5.5以降で廃止され、PHP 7では完全に削除されました。代わりにMySQLiまたはPDOを使用してください。 ** [あなたは[SQL Injections](http://php.net/manual/en/security.database.sql-injection.php)**を広く読んでいます**そして、実際には[Prepared Statements](http: /php.net/manual/en/mysqli.quickstart.prepared-statements.php)を使用してください。これは上記のMySQLiまたはPDOを使用する場合に使用できます。 –

+1

**は 'mysql'機能を使用しません。PHP7では廃止され** **削除されました。代わりに 'mysqli'や' PDO'を使い、**パラメータ化されたクエリ**を使用して**あなたのコードが脆弱な** SQLインジェクション**から身を守り、これらの厄介な小さな引用に関するすべてのエラーを防ぎます。 。 –

答えて

0

さまざまな場所で一重引用符がありません。以下のクエリを使用してみてください

mysql_query("INSERT INTO Messages (MessBody,Subject,Date,StaffID,AppID) 
     VALUES ('Your application\'s status has been changed to ".mysql_real_escape_string($_POST['offer'])."','Application Status Changed',NOW(),'".mysql_real_escape_string($_SESSION['StaffUser'])."','".mysql_real_escape_string($_SESSION['AppID'])."')"); 
+0

このクエリはまだクラッシュします( '$ _POST'には一重引用符を含む)。正直なところ、MySQLをより質の高いものにするために多くの努力を費やすことは、マゾヒズムのようなものです。 –

+0

私は自分のクエリを更新し、mysql_real_escape_string内の変数をラップしました – Bhavik

+0

まだ悪い例です。 'mysql_real_escape_string()'はあなたが思っているほど安全ではありません。 mysql_ *関数は安全ではなく、非推奨であるため、まったく使用しないでください。 –

関連する問題