Nasıl özel karakterleri depolamak için (', ", &, vb) mysql veritabanı, bu yüzden aranabilir olabilir?

2 Cevap php

Tırnak, çift tırnak ve 'işareti gibi özel karakterler depolama ile küçük bir sorun olan Im. I) (mysql_real_escape_string aracılığıyla her POST isteğini koymak, ve ben gibi bir dize eklediğinizde "That '70s Show" bu mysql DB "That '70s Show" olarak depolanır. Ben bunu echo, iyi çalışıyor ... ama ben bir% $ string% arama çalıştırmayı denediğinizde "That '70s Show", bu kayıt bulamazsınız. Ben magic_quotes devre dışı bıraktık.

Bunu nasıl etrafında alabilirsiniz?

2 Cevap

Sorun sadece mysql_real_escape_string() ile veritabanında depolamak gelen verileri çalışan, ama aynı zamanda htmlentities() ya da bir akraba değiliz olduğunu gibi görünüyor. Durum böyle mi? Eğer öyleyse, çıkın. :)

Quoted from Mysql reference doc

Bir dize içinde alıntı karakterler için çeşitli yolları vardır:

  • A "'" "" "''" olarak yazılmış olabilir ile aktardığı bir dize içinde'.

  • A "" "" "ile tırnaklı bir dizge içindeki" "" "" olarak yazılmış olabilir.

  • Bir kaçış karakteri ("\") tarafından alıntı karakterin önüne.

  • A “'” inside a string quoted with “"” needs no special treatment and need not be doubled or escaped. In the same way, “"” inside a string quoted with “'” needs no special treatment.

Aşağıdaki SELECT ifadeleri alıntı ve çalışma kaçan nasıl gösterilmektedir:

mysql> SELECT 'hello', '"hello"', '""hello""', 'hel''lo', '\'hello';
+-------+---------+-----------+--------+--------+
| hello | "hello" | ""hello"" | hel'lo | 'hello |
+-------+---------+-----------+--------+--------+

Bakınız: http://dev.mysql.com/doc/refman/5.0/en/string-syntax.html