在PHP中添加特殊字符

时间:2016-03-11 10:40:06

标签: php database special-characters

我的数据库不存储带有特定字符的$ title。我能做什么?在我的PHP代码下面:

    <?php
require "init.php";
$user_name = $_POST["user_name"];
$title = $_POST["title"];
$author = $_POST["author"];
$urlImage = $_POST["urlImage"];

preg_match("/^[\p{L}\p{N} '.-]+$/", $title);
$sql_query = "insert into user_info_book values('$user_name', '$title', '$author', '$urlImage');";
?>

提前谢谢

2 个答案:

答案 0 :(得分:1)

特殊字符可能会破坏您的SQL查询,因此要处理它,请使用预准备语句或使用mysqli_real_escape_string()函数。

mysqli_real_escape_string()函数需要两个参数,第一个是连接对象,第二个是要转义的字符串,下面是一个示例

$title = mysqli_real_escape_string($conn, $title);

但是,更好的方法是使用预准备语句。下面给出了一个例子

if ($stmt = $conn->prepare("INSERT INTO user_info_book VALUES (?, ?, ?, ?)")) {
    $stmt->bind_param("ssss", $user_name, $title, $author, $urlImage);
    $stmt->execute();
    $stmt->close();
} else {
    // echo mysqli_error($DB_H); // Errors should only be shown in development
}

代码中的任何地方,$conn都是您已创建的连接对象。

答案 1 :(得分:0)

$title = mysql_real_escape_string($title);

mysql_real_escape_string()转义字符串中的特殊字符,以便在SQL语句中使用。