将MySQL插入/更新为longtext Coulmn

时间:2015-12-10 16:50:41

标签: mysql

如何将以下字符串插入MySQL:

$myValue ouputs: [Hey, this is a multi text file that has special characters like this ' and this '' and this ,,"", and this ''' and this '''' and this !@$ and whatever]

但由于特殊字符,以下内容不起作用:

$sql = "UPDATE `mytable` SET NEWS=('$myValue') WHERE _id='1'";

我不想手动逃离每个chacarter(比如在每个'之前添加')

更新/插入应该从[并结束]开始(如$ myValue中所示)

编辑(mysqli)

    $_myValue = mysqli_real_escape_string($myValue);

    $conn = new mysqli($servername, $username, $password, $dbname);

    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    }

    $sql = "UPDATE `mytable` SET NEWS='$_myValue' WHERE _id='1'";


        if ($conn->query($sql) === TRUE) {
            echo "Record updated successfully";
        } else {
            echo "Error updating record: " . $conn->error;
        }

2 个答案:

答案 0 :(得分:1)

从代码的语法中我假设php用于将查询提交给mysql。

如果您只想转义传递给字段的字符串变量中的特殊字符,请使用

如果您正在寻找更通用的解决方案获得sql注入,那么请考虑使用预准备语句。请参阅this landmark SO topic,了解如何在php-mysql环境中阻止SQL注入。

答案 1 :(得分:0)

如果你使用php,你可以使用PDO;

$conn = new PDO( DB_DSN, DB_USERNAME, DB_PASSWORD );

$sql = "UPDATE `mytable` SET NEWS=:myValue WHERE _id=1";
$st = $conn->prepare( $sql );
$st->bindValue(":myValue", $myValue, PDO::PARAM_STR);
$st->execute();

这将输入$myValue中存储的所有数据。我也会考虑对输入进行整理。