Ich arbeite an einem Projekt, das OSCommerce mit MySQL verwendet und ich bin verwirrt, wenn ich tep_db_input() oder tep_db_prepare_input() verwenden sollte. Ich würde annehmen, dass ich tep_db_input() um irgendwelche Zeichenfolgen verwenden sollte, die eingefügt werden/aktualisiert werden, aber dann wann sollte die andere Funktion benutzt werden?OSCommerce tep_db_input vs tep_db_prepare_input
Zum Beispiel, wenn ich bin SELECT einige Daten aus der Datenbank, und verwenden Sie das Ergebnis dann INSERT eine Zeile in einer anderen Tabelle, muß ich den Eingang zu einem bestimmten Zeitpunkt vorzubereiten? Oder benutze einfach noch tep_db_input?
$width = '3"'; // 3 inches
$new_height = '3\' 5"'; // 3 feet 5 inches
$result = tep_db_query(
"SELECT height
FROM measurements
WHERE width = '".tep_db_input($width)."'"
);
while ($row = tep_db_fetch_array($result)) {
tep_db_query(
"INSERT INTO measurement_history (
field,
old_value,
new_value
) VALUES (
'height',
'".tep_db_input($row['height'])."',
'".tep_db_input($new_height)."'
)"
);
}
Ist das korrekt?
bearbeiten :: Falls jemand nicht vertraut mit diesen Funktionen ist, hier sind ihre Definitionen:
function tep_sanitize_string($string) {
$patterns = array ('/ +/','/[<>]/');
$replace = array (' ', '_');
return preg_replace($patterns, $replace, trim($string));
}
function tep_db_input($string, $link = 'db_link') {
global $$link;
if (function_exists('mysql_real_escape_string')) {
return mysql_real_escape_string($string, $$link);
} elseif (function_exists('mysql_escape_string')) {
return mysql_escape_string($string);
}
return addslashes($string);
}
function tep_db_prepare_input($string) {
if (is_string($string)) {
return trim(tep_sanitize_string(stripslashes($string)));
} elseif (is_array($string)) {
reset($string);
while (list($key, $value) = each($string)) {
$string[$key] = tep_db_prepare_input($value);
}
return $string;
} else {
return $string;
}
}