2016-04-28 8 views
0

In PHPVon PHP speziellen Zeichen nicht in mysql

<input type="checkbox" name="CBage" id="cbage2" value="and age >= 18 and age <= 24" checked/><label for="cbage2">18-24</label> 

Wert eingefügt = "und Alter> = 18 und Alter < = 24"

Nach Post Aktion in PHP (ich versucht habe)

$age1 = $_POST['CBage']; 
$age = mysql_real_escape_string(implode(",", $age1)); 

oder

$age = implode(",", $age1); 

Tabelle wird erstellt, wie

CREATE TABLE `jobs` (
`age` varchar(200) COLLATE utf8_unicode_ci 
)ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; 

In mysql es einfügen

INSERT INTO jobs VALUES ('$age') 

Der Wert wie folgt eingefügt

and age = 18 and age,and age = 25 and age, 

Das Problem besteht darin, dass es nicht den Wert korrekt ist ein (dessen fehlt> < und etwas Text am Ende) als

"and age >= 18 and age <= 24" but rather it inserted as "and age = 18 and age,and age = 25 and age," 
+0

möglich Duplikat (http://stackoverflow.com/questions/2843849/mysql-real-escape-more-than-once) versuchen htmlentities() –

+0

Nein, es isn‘zu verwenden, Ich vermisse diese Charaktere; Sie sehen sich den Wert in einem Webbrowser an, der sie als Sonderzeichen im HTML-Markup behandelt ... machen Sie eine "Quelltext anzeigen", um zu sehen, was wirklich aus der Datenbank abgerufen wird –

+0

ok, zuerst sollten Sie nicht ' t verwende mysql_ verwende stattdessen PDO oder MYSQLI. Versuchen Sie, einen vollständigen Code einzufügen, um das Problem besser zu verstehen. –

Antwort

0

versuchen htmlentities zu verwenden, um es kümmert sich um alle Sonder charecters nehmen ‚<‘ (weniger als) wird zu ‚<‘ ‚>‘ (größer als) wird zu ‚>‘ dann zu umkehren, wenn die Verwendung html_entity_decode Holen

'<' (less than) becomes '&lt;' '>' (greater than) becomes '&gt;' dann umkehren, wenn vorbereitet Verwendung html_entity_decode

zudem seine wichtig zu stoppen mysql_ mit schwerer PDO sQL-Injection Gefahr Gebrauch zu vermeiden oder Mysqli Abrufen Aussagen

$var1=htmlentities ($_POST['var1']) ; 


$sth = $dbh->prepare('INSERT INTO table(field1) VALUES (?)'); 

    $sth->bindParam(1, $var1, PDO::PARAM_STR); 
    $sth->execute(); 

zurückzuholen

$sth = $dbh->query('SELECT * FROM table'); 

while($row = $sth ->fetch(PDO::FETCH_ASSOC)) { 
    echo html_entity_decode($row['field1']); //etc... 
} 
+1

aktualisiert den Tippfehler –

+0

Danke für den Vorschlag, es hat funktioniert. – Newbie2Bootstrap

Verwandte Themen