这是以正确的方式转义字符串的正确方法吗?或者我可以插入这样的字符串而无需额外的转义?
$filenamefordb = preg_replace('/[^A-Za-z0-9а-яА-Я_\.\-]/u', '', $filenamefordb);
$query = "INSERT INTO file SET filename='$filenamefordb";
我不使用mysqli_escape,因为我还需要在其他地方没有任何引号的名称
答案 0 :(得分:1)
为什么不使用PDO转义字符串?
<?php
$conn = new PDO('sqlite:/home/lynn/music.sql3');
/* Complex string */
$string = "Co'mpl''ex \"st'\"ring";
print "Unquoted string: $string\n";
print "Quoted string: " . $conn->quote($string) . "\n";
?>
这将输出
Unquoted string: Co'mpl''ex "st'"ring
Quoted string: 'Co''mpl''''ex "st''"ring'
答案 1 :(得分:0)
你可以使用通用的php函数来逃避它:
$filenamefordb = mysql_escape_string ($filenamefordb);
$query = "INSERT INTO file SET filename='$filenamefordb";