Php 负责更换';以字符串形式使用sql

Php 负责更换';以字符串形式使用sql,php,mysql,sql,Php,Mysql,Sql,我正在做一件简单的事情来使用我的php知识,并学习它和它的工作迄今为止,但我遇到了一个问题,当字符串有'在它。我明白它为什么要这么做,我知道有办法,但我找不到这个问题的具体答案 <?php if (isset($_POST['submit'])){ $title = $_POST['title']; $text = $_POST['text']; $connection = mysqli_connect('localhost','root','','blog');

我正在做一件简单的事情来使用我的php知识,并学习它和它的工作迄今为止,但我遇到了一个问题,当字符串有'在它。我明白它为什么要这么做,我知道有办法,但我找不到这个问题的具体答案

<?php
if (isset($_POST['submit'])){
    $title = $_POST['title'];
    $text = $_POST['text'];
    $connection = mysqli_connect('localhost','root','','blog');
    if (strpos($text,"\'") !== false){
        str_replace("\'","\'",$text);
    }
    $query = "INSERT INTO `posts`(`title`, `text`) VALUES ('".$title."', '".$text."')";
    $result = mysqli_query($connection,$query);
    if (!$result){
        die("error" . mysqli_error($connection));
    } else {
        header("Location:http://localhost/blog-testing/");
        die();
    }
}

如果使用绑定查询,它会自动保护您不受数据中的引号和数据的影响


使用参数。不要用文字值来表示查询。你应该使用预处理语句**来防止**sql喷射++请仔细阅读如果你使用预处理和绑定的参数化查询,你就再也不用担心数据中的引号了
<?php
$connection = mysqli_connect('localhost', 'root', '', 'blog_test');
if ($connection){
    echo "connection success";
} else {
    echo "connection failure";
}

$query ="INSERT INTO `text-test` (`title`, `content`) VALUES (?,?)";

$stmt = $connection->prepare($query);
$stmt->bind_param('ss',$_POST['title'], $_POST['text']);
$result = $stmt->execute();

if (!$result){
    //die("Query failed" . mysqli_error());
    //Dont die(), report an error into a log file
} else {
    header( "Location: http://localhost/blog-testing/");
    exit;
}