替换引号后正确的方法来逃避字符串?

时间:2014-09-26 13:05:53

标签: php mysql

这是以正确的方式转义字符串的正确方法吗?或者我可以插入这样的字符串而无需额外的转义?

$filenamefordb = preg_replace('/[^A-Za-z0-9а-яА-Я_\.\-]/u', '', $filenamefordb);
$query = "INSERT INTO file SET filename='$filenamefordb";

我不使用mysqli_escape,因为我还需要在其他地方没有任何引号的名称

2 个答案:

答案 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'

参考: http://php.net/manual/it/pdo.quote.php

答案 1 :(得分:0)

你可以使用通用的php函数来逃避它:

$filenamefordb = mysql_escape_string ($filenamefordb);
$query = "INSERT INTO file SET filename='$filenamefordb";