php - 替换引号后转义字符串的正确方法?

标签 php mysql

这是对字符串进行转义以防万一的正确方法还是我可以像这样插入字符串而无需额外转义?

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

我不使用 mysqli_escape 因为我还需要在另一个地方不带任何引号的名称

最佳答案

为什么不使用 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

关于php - 替换引号后转义字符串的正确方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26060335/

相关文章:

php - 我怎么知道在我的 select sql 中查询了哪些表?

php,postgresql,mysql

带有 LIKE 子句的 PHP 参数化 mysql 语句返回不同步的命令

mysql - 编辑数据库中的最新行?

PHP fatal error : require_once(): Failed opening required

php - 使用 PHP 添加新的 mySQL 表行不起作用

php - Yii Framework - CGridView 排序相关列

mysql - Rails 服务器突然停止与 Mysql 一起工作并且无法连接

mysql - 如何使用camel将数据从mysql传输到oracle

mysql - sql根据列值限制行数