sql >> Database >  >> RDS >> Mysql

Wanneer ik aan alle invoer ontsnap, laat het soms schuine strepen (\) in de tekenreeks achter en voegt deze toe aan de database. Waarom gebeurt het en hoe kan ik dit oplossen?

Je hebt gelijk.
magische aanhalingstekens hebben niets te maken met sql-dingen en zouden er niet mee verbonden moeten zijn.
Omdat magische aanhalingstekens een probleem voor de hele site is en sql-escaping alleen een sql-gerelateerd probleem is.

Ze hebben dus een andere behandeling nodig en mogen nooit in combinatie worden gebruikt.

Je moet onvoorwaardelijk van magische aanhalingstekens afkomen, omdat het niet alleen SQL-dingen bederft, maar ook elke gegevensmanipulatie van je site.

Het zou dus verstandig zijn om wat stripslashes-code in een bootstrap-bestand te plaatsen dat bij elke aanroep van het script moet worden uitgevoerd. De code vind je in talloze implementaties van zo'n code, google maar eens op de functie 'stripslashes_deep'.

Het zou verstandig zijn om deze code altijd te laten draaien (uiteraard onder de voorwaarde check get_magic_quotes_gpc()) ondanks de actuele staat van magische aanhalingstekens, alleen omwille van de compatibiliteit.

Maar er is nog een andere mogelijkheid om ze uit te schakelen:probeer een php.ini-bestand aan te maken in de root van je applicatie.

Er staat echter een ernstige fout in uw code. In feite beschermt het niets.
U ontsnapt aan $memberid en $postid maar citeer ze niet! . Er is dus helemaal geen bescherming. Gewoon omdat escapen alleen werkt bij citeren.

Onthoud alsjeblieft:

Ontsnappen is geen synoniem voor veiligheid!

Alleen ontsnappen helpt niets. Er moet een hele reeks regels worden gevolgd.

Ik heb onlangs een fatsoenlijke uitleg geschreven, dus ik zou mezelf niet herhalen:Mysql_*-functies vervangen door PDO en voorbereide instructies



  1. Toegang geweigerd voor gebruiker 'root'@'localhost' (met wachtwoord:YES) (Mysql::Error)

  2. Haal gegevens op uit de knooppuntentabel in Yii2

  3. Hoe geüploade bestanden op te halen met php

  4. bulkgegevens importeren in MySQL