如何将以下字符串插入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;
}
答案 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
中存储的所有数据。我也会考虑对输入进行整理。