MySQL Gerçek Kaçış Dize PHP Fonksiyonu "\" ekleme

3 Cevap php

Ben PHP kullanarak benim MySQL veritabanı için bir form göndererek duyuyorum.

Ben aracılığıyla form verilerini yolluyorum

mysql_real_escape_string($content); 

fonksiyonu.

Giriş (myphpadmin kontrol) benim veritabanında gösterir zaman zaman çift tırnak ve tek tırnak tüm kaçtı.

Bu bir PHP yapılandırma konudur eminim?

bu yüzden:

$content = 'Hi, my name is Jascha and my "favorite" thing to do is sleep';
mysql_real_escape_string($content);
$query = 'INSERT INTO DB...'

benim veritabanında kadar gelir olarak:

Merhaba, benim adım Jascha ve benim \ yapmak için "favori" şey uyku

Ne yapacağımı kime anlatıyorsun? (Ben php.ini erişemez).

-J

3 Cevap

Bir formdan $ içerik verilerini alıyorsanız (and not "as-is" in the PHP code), belki çünkü Magic tırnak (see magic_quotes_gpc ) bir sorun yaşıyorsanız

Temelde:

When magic_quotes are on, all ' (single-quote), " (double quote), \ (backslash) and NUL's are escaped with a backslash automatically

Sihirli tırnak etkinse (you can check this in the ouput of phpinfo() , for instance), sen "çifte kaçan" bu tür almak olacak:

  • Bu karakterler sihirli tırnak kez kaçtı olacak,
  • Ve sonra onlar mysql_real_escape_string tarafından ikinci kez kaçtı olacak


The good solution, in this case, is not to stop using mysql_real_escape_string, but to disabled magic_quotes_gpc in your configuration...

... Ama, sen buna erişiminiz yok gibi, aslında stripslashes on the input you're getting as $_GET ve {[(2 çağırarak, sihirli tırnak etkisi "dönmek" gerekecek )]}, kullanmadan Yürürlükten önce.

Not: Bu manuel sayfasında verilen bulunuyor bir tavsiyem mysql_real_escape_string (quoting):

Note: If magic_quotes_gpc is enabled, first apply stripslashes() to the data. Using this function on data which has already been escaped will escape the data twice.

I know it is a little late, but as a noob to php I needed something really simple. So I am using this code below to fix the problem described by the OP with magic_quotes_gpc I have a server running php 5.2.8 and one running 5.3

My web app is using datatables.net to display information. I started getting JSON errors when data was saved with special characters escaped in the database.

Benim Kalkınma makine bu karşılaşılmasına değildi 5.3 kullanır, ancak php 5.2.8 ile benim veritabanına değerleri kaydetmek için stripslashes işlevini kullanmak gerekiyordu.

$description = mysql_real_escape_string($description);
// hack for php 5.2.8 //
if (get_magic_quotes_gpc()) {
     $description = stripslashes($description); 
     //echo "description: $description";
    }

I realize this is basically the same answer as above, but for me it seemed more my style. Hopefully this will help others in the same boat as I am.....