2010-12-15 2 views
-1

Ich poste die Daten der dynamisch generierten Textbox in PHP. Wenn ich die Daten mit real_escape_string() schreiben, das heißt:php real_escape_string

$ingredient = mysql_real_escape_string($_POST['ingredient']); 

... es keine Daten von Textbox nicht schreiben und ich verwende einfach $_POST['']; Methode heißt:

$ingredient = $_POST['ingredient']; 

... es gibt mir Fehler wenn ich ein einfaches Zitat (') in meinem Text verwende.

Sie haben einen Fehler in Ihrer SQL-Syntax; das Handbuch, die lokal in der Nähe von ‚s‘ zu verwenden, ‚fgad‘, ‚55‘)‘in Zeile 2

dies war meine alte Post
i löste das Problem auf Ihre MySQL-Server-Version für die richtige Syntax entspricht indem ich magic_quotes_gpc = On aktiviere, aber wenn ich es auf meinem Server hochlade, funktioniert es nicht mehr, also wie kann ich magische Anführungszeichen auf dem Server einschalten.

+0

Entschuldigung, was? Was ist das genaue Problem mit mysql_real_escape? – deceze

+0

Es wird kein Fehler angezeigt und wenn ich die Datenbanktabelle überprüft habe, wird dort kein Datensatz eingefügt – hunter

+3

Überprüfen Sie den Rückgabewert Ihres 'mysql_query' Aufrufs. Wenn es falsch ist, können Sie den Grund dafür herausfinden, indem Sie den Rückgabewert von mysql_error ausdrucken. –

Antwort

-1

Ich denke, das könnte auf die „Magie“ zitiert in Beziehung gesetzt werden verfügen - diese Seite Details siehe: Magic Strings & SQL

Grundsätzlich aufgrund von Problemen mit SQL-Injection-Angriffe, sie vorge entkommen Strings mit Anführungszeichen nach einer bestimmten Version von PHP (ich denke, es war 5.0, aber ich könnte falsch liegen). Das Endergebnis ist, dass Ihre Software nun nach der Softwareversion suchen muss und sich anders verhalten muss, je nachdem, ob die Zeichenfolge bereits maskiert ist oder nicht.

+1

Magic Zitate wurden in 4.0 (2001, vor fast einem Jahrzehnt) hinzugefügt und vor mindestens 2 oder 3 Jahren offiziell veraltet. –

+0

Danke für die Korrektur. :) Die Zeit vergeht so schnell !! – Mehrdad

+0

aber es funktioniert nicht auf meinem Server .... !!! – hunter

1

Haben Sie eine offene Datenbankverbindung? mysql_real_escape_string benötigt einen MySQL-Server, mit dem Sie sprechen können, um zu funktionieren.

+0

natürlich habe es Ursache, wenn ich durch einfache hinzufügen $ _POST [''] fügt hinzu Aufnahme in die Datenbank – hunter

+1

@hunter Sie benötigen die offene Verbindung ** zum Zeitpunkt des Aufrufs von mysql_real_escape_string **. Wenn Sie die Verbindung danach öffnen, wird es nicht funktionieren. – deceze

+0

Ich habe eine Datenbankverbindung oben auf meiner Seite – hunter

0

Sie möchten vielleicht

$ingredient = $_POST['ingredient']; 

$ingredient = mysql_real_escape_string($ingredient); 
0
<?php 
$con=mysqli_connect("localhost","my_user","my_password","my_db"); 

// Check connection 
if (mysqli_connect_errno()) { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 

// escape variables for security 
$firstname = mysqli_real_escape_string($con, $_POST['firstname']); 
$lastname = mysqli_real_escape_string($con, $_POST['lastname']); 
$age = mysqli_real_escape_string($con, $_POST['age']); 

$sql="INSERT INTO Persons (FirstName, LastName, Age) 
VALUES ('$firstname', '$lastname', '$age')"; 

if (!mysqli_query($con,$sql)) { 
    die('Error: ' . mysqli_error($con)); 
} 
echo "1 record added"; 

mysqli_close($con); 
?> 

Sie Verbindung db http://php.net/manual/en/mysqli.real-escape-string.php

sehen verwendet wird, muss versuchen, können Sie verwenden auch
String mysqli :: real_escape_string (string $ escapestr)